1<!DOCTYPE html>
 
2<html xmlns='http://www.w3.org/1999/xhtml'>
 
3  <head>
 
4    <title>Code coverage for Mental-test</title>
5
 
5    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
 
6    <script src='./assets/0.10.2/application.js' type='text/javascript'></script>    
7
 
7    <link href='./assets/0.10.2/application.css' media='screen, projection, print' rel='stylesheet' type='text/css'>
 
8    <link rel="shortcut icon" type="image/png" href="./assets/0.10.2/favicon_green.png" />
 
 9    <link rel="icon" type="image/png" href="./assets/0.10.2/favicon.png" />
 
10  </head>
11
 
 
12  <body>
 
13    <div id="loading">
 
14      <img src="./assets/0.10.2/loading.gif" alt="loading"/>
 
15    </div>
16
 
16    <div id="wrapper" style="display:none;">
 
17      <div class="timestamp">Generated <abbr class="timeago" title="2018-03-08T23:30:07-05:00">2018-03-08T23:30:07-05:00</abbr></div>
 
18      <ul class="group_tabs"></ul>
19
 
 
20      <div id="content">
 
21        <div class="file_list_container" id="AllFiles">
 
22  <h2>
 
23    <span class="group_name">All Files</span>
24
 
24    (<span class="covered_percent"><span class="green">99.88%</span></span>
 
25     covered at
 
26     <span class="covered_strength">
 
27       <span class="green">
 
28         2.05
 
29       </span>
30
 
30    </span> hits/line)
 
31  </h2>
32
 
32  <a name="AllFiles"></a>
33
 
33  <div>
 
34    <b>47</b> files in total.
35
 
35    <b>839</b> relevant lines. 
36
 
36    <span class="green"><b>838</b> lines covered</span> and
 
37    <span class="red"><b>1</b> lines missed </span>
 
38  </div>
39
 
39  <table class="file_list">
 
40    <thead>
 
41      <tr>
 
42        <th>File</th>
43
 
43        <th>% covered</th>
44
 
44        <th>Lines</th>
45
 
45        <th>Relevant Lines</th>
46
 
46        <th>Lines covered</th>
47
 
47        <th>Lines missed</th>
48
 
48        <th>Avg. Hits / Line</th>
49
 
49      </tr>
50
 
50    </thead>
51
 
51    <tbody>
 
 
53      <tr>
 
54        <td class="strong"><a href="#da3dc08a4f6630002c60b8c77f668c019098f4ea" class="src_link" title="db/seeds.rb">db/seeds.rb</a></td>
 
55        <td class="green strong">100.0 %</td>
56
 
56        <td>9</td>
57
 
57        <td>5</td>
58
 
58        <td>5</td>
59
 
59        <td>0</td>
60
 
60        <td>1.8</td>
61
 
61      </tr>
62
 
 
63      <tr>
 
64        <td class="strong"><a href="#692d5557b55c4fca9eceb290449853f4fcb3589c" class="src_link" title="db/seeds/all.rb">db/seeds/all.rb</a></td>
 
65        <td class="green strong">100.0 %</td>
66
 
66        <td>15</td>
67
 
67        <td>10</td>
68
 
68        <td>10</td>
69
 
69        <td>0</td>
70
 
70        <td>1.0</td>
71
 
71      </tr>
72
 
 
73      <tr>
 
74        <td class="strong"><a href="#e209895f070bfcb89abcc649a8c7b5d6cbdd7336" class="src_link" title="db/seeds/test.rb">db/seeds/test.rb</a></td>
 
75        <td class="green strong">100.0 %</td>
76
 
76        <td>1</td>
77
 
77        <td>0</td>
78
 
78        <td>0</td>
79
 
79        <td>0</td>
80
 
80        <td>0.0</td>
81
 
81      </tr>
82
 
 
83      <tr>
 
84        <td class="strong"><a href="#ff48b158555a0f25de06fe94ac0a61e19f67c469" class="src_link" title="models/alexa_helper.rb">models/alexa_helper.rb</a></td>
 
85        <td class="green strong">100.0 %</td>
86
 
86        <td>11</td>
87
 
87        <td>5</td>
88
 
88        <td>5</td>
89
 
89        <td>0</td>
90
 
90        <td>1.0</td>
91
 
91      </tr>
92
 
 
93      <tr>
 
94        <td class="strong"><a href="#2d018f3dd855cf9bc6f217b6a419d804c3d1d64b" class="src_link" title="models/application_record.rb">models/application_record.rb</a></td>
 
95        <td class="green strong">100.0 %</td>
96
 
96        <td>14</td>
97
 
97        <td>6</td>
98
 
 98        <td>6</td>
 99
 
 99        <td>0</td>
100
 
100        <td>36.3</td>
101
 
101      </tr>
102
 
 
103      <tr>
 
104        <td class="strong"><a href="#a49246a2522a63add508e3b69d6d83db72135904" class="src_link" title="models/arm.rb">models/arm.rb</a></td>
 
105        <td class="green strong">100.0 %</td>
106
 
106        <td>26</td>
107
 
107        <td>15</td>
108
 
108        <td>15</td>
109
 
109        <td>0</td>
110
 
110        <td>1.6</td>
111
 
111      </tr>
112
 
 
113      <tr>
 
114        <td class="strong"><a href="#f8c1f4dc84acdf57617d8d4510ec7033ef413e66" class="src_link" title="models/assessment.rb">models/assessment.rb</a></td>
 
115        <td class="green strong">100.0 %</td>
116
 
116        <td>33</td>
117
 
117        <td>12</td>
118
 
118        <td>12</td>
119
 
119        <td>0</td>
120
 
120        <td>1.5</td>
121
 
121      </tr>
122
 
 
123      <tr>
 
124        <td class="strong"><a href="#0c878ce3efc7ec0aa9e8d46b572d56c90690f23a" class="src_link" title="models/assessment_instrument.rb">models/assessment_instrument.rb</a></td>
 
125        <td class="green strong">100.0 %</td>
126
 
126        <td>24</td>
127
 
127        <td>7</td>
128
 
128        <td>7</td>
129
 
129        <td>0</td>
130
 
130        <td>1.0</td>
131
 
131      </tr>
132
 
 
133      <tr>
 
134        <td class="strong"><a href="#8ae75c72db7d4f5bffbd8b4bd6fa18d4fdfddcc2" class="src_link" title="models/choice.rb">models/choice.rb</a></td>
 
135        <td class="green strong">100.0 %</td>
136
 
136        <td>28</td>
137
 
137        <td>10</td>
138
 
138        <td>10</td>
139
 
139        <td>0</td>
140
 
140        <td>1.0</td>
141
 
141      </tr>
142
 
 
143      <tr>
 
144        <td class="strong"><a href="#a16e0f61ae2ee23dfe2c8062e7e6644c04a2d48d" class="src_link" title="models/folder.rb">models/folder.rb</a></td>
 
145        <td class="green strong">100.0 %</td>
146
 
146        <td>16</td>
147
 
147        <td>7</td>
148
 
148        <td>7</td>
149
 
149        <td>0</td>
150
 
150        <td>1.0</td>
151
 
151      </tr>
152
 
 
153      <tr>
 
154        <td class="strong"><a href="#2e6a217f45fe204e616e52437f8c27ef09aaedcb" class="src_link" title="models/init.rb">models/init.rb</a></td>
 
155        <td class="green strong">100.0 %</td>
156
 
156        <td>23</td>
157
 
157        <td>21</td>
158
 
158        <td>21</td>
159
 
159        <td>0</td>
160
 
160        <td>1.0</td>
161
 
161      </tr>
162
 
 
163      <tr>
 
164        <td class="strong"><a href="#69ff954048c07e6ed4615cc5b695e6a37ca424ca" class="src_link" title="models/instrument.rb">models/instrument.rb</a></td>
 
165        <td class="green strong">100.0 %</td>
166
 
166        <td>47</td>
167
 
167        <td>17</td>
168
 
168        <td>17</td>
169
 
169        <td>0</td>
170
 
170        <td>1.4</td>
171
 
171      </tr>
172
 
 
173      <tr>
 
174        <td class="strong"><a href="#bc2520e3a08211a03bd451e53830f7e9329dd1a6" class="src_link" title="models/item.rb">models/item.rb</a></td>
 
175        <td class="green strong">100.0 %</td>
176
 
176        <td>37</td>
177
 
177        <td>12</td>
178
 
178        <td>12</td>
179
 
179        <td>0</td>
180
 
180        <td>1.0</td>
181
 
181      </tr>
182
 
 
183      <tr>
 
184        <td class="strong"><a href="#de81724d1889d6b1b6f65da9a7032c92d4330275" class="src_link" title="models/project.rb">models/project.rb</a></td>
 
185        <td class="green strong">100.0 %</td>
186
 
186        <td>24</td>
187
 
187        <td>11</td>
188
 
188        <td>11</td>
189
 
189        <td>0</td>
190
 
190        <td>1.5</td>
191
 
191      </tr>
192
 
 
193      <tr>
 
194        <td class="strong"><a href="#fdaa8bd0bc68551d6bf2dd3ca43a82faf8834fc9" class="src_link" title="models/response.rb">models/response.rb</a></td>
 
195        <td class="green strong">100.0 %</td>
196
 
196        <td>24</td>
197
 
197        <td>7</td>
198
 
198        <td>7</td>
199
 
199        <td>0</td>
200
 
200        <td>1.0</td>
201
 
201      </tr>
202
 
 
203      <tr>
 
204        <td class="strong"><a href="#83909dcc3eb7cfd3e0bbe12de679d6367cebeeba" class="src_link" title="models/response_scale.rb">models/response_scale.rb</a></td>
 
205        <td class="green strong">100.0 %</td>
206
 
206        <td>25</td>
207
 
207        <td>8</td>
208
 
208        <td>8</td>
209
 
209        <td>0</td>
210
 
210        <td>1.3</td>
211
 
211      </tr>
212
 
 
213      <tr>
 
214        <td class="strong"><a href="#014f099aa4fef849b0ab2896e6cdefe35bf1f164" class="src_link" title="models/schedule.rb">models/schedule.rb</a></td>
 
215        <td class="green strong">100.0 %</td>
216
 
216        <td>19</td>
217
 
217        <td>9</td>
218
 
218        <td>9</td>
219
 
219        <td>0</td>
220
 
220        <td>1.7</td>
221
 
221      </tr>
222
 
 
223      <tr>
 
224        <td class="strong"><a href="#d669f1b535c2bfa8cb712ec5408a6b919da14a67" class="src_link" title="models/score.rb">models/score.rb</a></td>
 
225        <td class="green strong">100.0 %</td>
226
 
226        <td>18</td>
227
 
227        <td>11</td>
228
 
228        <td>11</td>
229
 
229        <td>0</td>
230
 
230        <td>1.0</td>
231
 
231      </tr>
232
 
 
233      <tr>
 
234        <td class="strong"><a href="#625f753d77a7f89ba8c82881c0f51b83fc0f5a82" class="src_link" title="models/study.rb">models/study.rb</a></td>
 
235        <td class="green strong">100.0 %</td>
236
 
236        <td>16</td>
237
 
237        <td>7</td>
238
 
238        <td>7</td>
239
 
239        <td>0</td>
240
 
240        <td>2.4</td>
241
 
241      </tr>
242
 
 
243      <tr>
 
244        <td class="strong"><a href="#84686a0e912ff69b30fb305ba3b5d7ed7cebcd05" class="src_link" title="models/study_event.rb">models/study_event.rb</a></td>
 
245        <td class="green strong">100.0 %</td>
246
 
246        <td>24</td>
247
 
247        <td>13</td>
248
 
248        <td>13</td>
249
 
249        <td>0</td>
250
 
250        <td>1.2</td>
251
 
251      </tr>
252
 
 
253      <tr>
 
254        <td class="strong"><a href="#1ba95d97bcc5e1ad5e3ada6ac9c1b94b24743ade" class="src_link" title="models/study_event_instrument.rb">models/study_event_instrument.rb</a></td>
 
255        <td class="green strong">100.0 %</td>
256
 
256        <td>24</td>
257
 
257        <td>7</td>
258
 
258        <td>7</td>
259
 
259        <td>0</td>
260
 
260        <td>1.0</td>
261
 
261      </tr>
262
 
 
263      <tr>
 
264        <td class="strong"><a href="#f5fdaa64256e6a648996900f980487dc04adf72f" class="src_link" title="models/survey.rb">models/survey.rb</a></td>
 
265        <td class="green strong">100.0 %</td>
266
 
266        <td>43</td>
267
 
267        <td>15</td>
268
 
268        <td>15</td>
269
 
269        <td>0</td>
270
 
270        <td>2.3</td>
271
 
271      </tr>
272
 
 
273      <tr>
 
274        <td class="strong"><a href="#c2997a8e32220eb245d733e0477894e0487da5a8" class="src_link" title="models/user.rb">models/user.rb</a></td>
 
275        <td class="green strong">100.0 %</td>
276
 
276        <td>41</td>
277
 
277        <td>12</td>
278
 
278        <td>12</td>
279
 
279        <td>0</td>
280
 
280        <td>2.3</td>
281
 
281      </tr>
282
 
 
283      <tr>
 
284        <td class="strong"><a href="#c001cb3a9ab314cffb653bd540313ae3d27bde9b" class="src_link" title="models/user_survey.rb">models/user_survey.rb</a></td>
 
285        <td class="green strong">100.0 %</td>
286
 
286        <td>25</td>
287
 
287        <td>7</td>
288
 
288        <td>7</td>
289
 
289        <td>0</td>
290
 
290        <td>1.0</td>
291
 
291      </tr>
292
 
 
293      <tr>
 
294        <td class="strong"><a href="#a218fdd0bf0a41cd95b3323a3ec3b62d0acb5b56" class="src_link" title="models/visit.rb">models/visit.rb</a></td>
 
295        <td class="green strong">100.0 %</td>
296
 
296        <td>32</td>
297
 
297        <td>11</td>
298
 
298        <td>11</td>
299
 
299        <td>0</td>
300
 
300        <td>1.7</td>
301
 
301      </tr>
302
 
 
303      <tr>
 
304        <td class="strong"><a href="#8d3214723093df1c6322390ad5f7c6099fbd5434" class="src_link" title="spec/alexa_helper_spec.rb">spec/alexa_helper_spec.rb</a></td>
 
305        <td class="green strong">100.0 %</td>
306
 
306        <td>12</td>
307
 
307        <td>6</td>
308
 
308        <td>6</td>
309
 
309        <td>0</td>
310
 
310        <td>1.3</td>
311
 
311      </tr>
312
 
 
313      <tr>
 
314        <td class="strong"><a href="#b4cf109f871498502198a62924e17048eabf4d6e" class="src_link" title="spec/arm_spec.rb">spec/arm_spec.rb</a></td>
 
315        <td class="green strong">100.0 %</td>
316
 
316        <td>38</td>
317
 
317        <td>20</td>
318
 
318        <td>20</td>
319
 
319        <td>0</td>
320
 
320        <td>2.2</td>
321
 
321      </tr>
322
 
 
323      <tr>
 
324        <td class="strong"><a href="#8db424b4a391ac2c4afa2d06f4e5154b8331e3ac" class="src_link" title="spec/assessment_instrument_spec.rb">spec/assessment_instrument_spec.rb</a></td>
 
325        <td class="green strong">100.0 %</td>
326
 
326        <td>54</td>
327
 
327        <td>28</td>
328
 
328        <td>28</td>
329
 
329        <td>0</td>
330
 
330        <td>3.0</td>
331
 
331      </tr>
332
 
 
333      <tr>
 
334        <td class="strong"><a href="#6616413b524ca526b0f278ad9131942f4a669e2e" class="src_link" title="spec/assessment_spec.rb">spec/assessment_spec.rb</a></td>
 
335        <td class="green strong">100.0 %</td>
336
 
336        <td>47</td>
337
 
337        <td>24</td>
338
 
338        <td>24</td>
339
 
339        <td>0</td>
340
 
340        <td>2.3</td>
341
 
341      </tr>
342
 
 
343      <tr>
 
344        <td class="strong"><a href="#e317bbdd0de37fa13f714f7810947405632e5be8" class="src_link" title="spec/choice_spec.rb">spec/choice_spec.rb</a></td>
 
345        <td class="green strong">100.0 %</td>
346
 
346        <td>48</td>
347
 
347        <td>28</td>
348
 
348        <td>28</td>
349
 
349        <td>0</td>
350
 
350        <td>1.5</td>
351
 
351      </tr>
352
 
 
353      <tr>
 
354        <td class="strong"><a href="#c3be4fb5424413adb7ddba57102c9a048427a643" class="src_link" title="spec/factories.rb">spec/factories.rb</a></td>
 
355        <td class="green strong">100.0 %</td>
356
 
356        <td>32</td>
357
 
357        <td>16</td>
358
 
358        <td>16</td>
359
 
359        <td>0</td>
360
 
360        <td>1.0</td>
361
 
361      </tr>
362
 
 
363      <tr>
 
364        <td class="strong"><a href="#0993cdcebd2cf5e81035cef9bd60cb0a457334ac" class="src_link" title="spec/folder_spec.rb">spec/folder_spec.rb</a></td>
 
365        <td class="green strong">100.0 %</td>
366
 
366        <td>49</td>
367
 
367        <td>27</td>
368
 
368        <td>27</td>
369
 
369        <td>0</td>
370
 
370        <td>1.9</td>
371
 
371      </tr>
372
 
 
373      <tr>
 
374        <td class="strong"><a href="#80d02a9543cf12a564eb1da503ed251086f13e08" class="src_link" title="spec/instrument_loader_spec.rb">spec/instrument_loader_spec.rb</a></td>
 
375        <td class="green strong">100.0 %</td>
376
 
376        <td>23</td>
377
 
377        <td>11</td>
378
 
378        <td>11</td>
379
 
379        <td>0</td>
380
 
380        <td>1.9</td>
381
 
381      </tr>
382
 
 
383      <tr>
 
384        <td class="strong"><a href="#39142caad539feaf2dde7249c1aa38872d156c40" class="src_link" title="spec/instrument_spec.rb">spec/instrument_spec.rb</a></td>
 
385        <td class="green strong">100.0 %</td>
386
 
386        <td>87</td>
387
 
387        <td>48</td>
388
 
388        <td>48</td>
389
 
389        <td>0</td>
390
 
390        <td>1.3</td>
391
 
391      </tr>
392
 
 
393      <tr>
 
394        <td class="strong"><a href="#6bc4ba0f242b64d1ebad1e339712c1d6d2130689" class="src_link" title="spec/item_spec.rb">spec/item_spec.rb</a></td>
 
395        <td class="green strong">100.0 %</td>
396
 
396        <td>43</td>
397
 
397        <td>22</td>
398
 
398        <td>22</td>
399
 
399        <td>0</td>
400
 
400        <td>1.5</td>
401
 
401      </tr>
402
 
 
403      <tr>
 
404        <td class="strong"><a href="#afad5ef51e7836084a99570bc945637d98d3983c" class="src_link" title="spec/project_spec.rb">spec/project_spec.rb</a></td>
 
405        <td class="green strong">100.0 %</td>
406
 
406        <td>45</td>
407
 
407        <td>24</td>
408
 
408        <td>24</td>
409
 
409        <td>0</td>
410
 
410        <td>1.8</td>
411
 
411      </tr>
412
 
 
413      <tr>
 
414        <td class="strong"><a href="#e6cb8af650b3aa514d3720bd06c36b5be218afdc" class="src_link" title="spec/response_scale_spec.rb">spec/response_scale_spec.rb</a></td>
 
415        <td class="green strong">100.0 %</td>
416
 
416        <td>48</td>
417
 
417        <td>27</td>
418
 
418        <td>27</td>
419
 
419        <td>0</td>
420
 
420        <td>1.4</td>
421
 
421      </tr>
422
 
 
423      <tr>
 
424        <td class="strong"><a href="#8426929ebb0fb2da98fbfe17296e05fee1078c81" class="src_link" title="spec/response_spec.rb">spec/response_spec.rb</a></td>
 
425        <td class="green strong">100.0 %</td>
426
 
426        <td>64</td>
427
 
427        <td>36</td>
428
 
428        <td>36</td>
429
 
429        <td>0</td>
430
 
430        <td>2.7</td>
431
 
431      </tr>
432
 
 
433      <tr>
 
434        <td class="strong"><a href="#6857b0b493292a70027d63f12eba7fe318a17d20" class="src_link" title="spec/schedule_spec.rb">spec/schedule_spec.rb</a></td>
 
435        <td class="green strong">100.0 %</td>
436
 
436        <td>38</td>
437
 
437        <td>19</td>
438
 
438        <td>19</td>
439
 
439        <td>0</td>
440
 
440        <td>1.9</td>
441
 
441      </tr>
442
 
 
443      <tr>
 
444        <td class="strong"><a href="#73df1469b4108bfe19cd3acfa6f51f768d121b48" class="src_link" title="spec/score_spec.rb">spec/score_spec.rb</a></td>
 
445        <td class="green strong">97.67 %</td>
446
 
446        <td>75</td>
447
 
447        <td>43</td>
448
 
448        <td>42</td>
449
 
449        <td>1</td>
450
 
450        <td>2.8</td>
451
 
451      </tr>
452
 
 
453      <tr>
 
454        <td class="strong"><a href="#fea0ee70b413122c0fb07129bd5c696d3e282b1f" class="src_link" title="spec/study_event_instrument_spec.rb">spec/study_event_instrument_spec.rb</a></td>
 
455        <td class="green strong">100.0 %</td>
456
 
456        <td>54</td>
457
 
457        <td>28</td>
458
 
458        <td>28</td>
459
 
459        <td>0</td>
460
 
460        <td>3.0</td>
461
 
461      </tr>
462
 
 
463      <tr>
 
464        <td class="strong"><a href="#373f58940560afa620022d1cd00e89e728b8cefe" class="src_link" title="spec/study_event_spec.rb">spec/study_event_spec.rb</a></td>
 
465        <td class="green strong">100.0 %</td>
466
 
466        <td>39</td>
467
 
467        <td>21</td>
468
 
468        <td>21</td>
469
 
469        <td>0</td>
470
 
470        <td>2.4</td>
471
 
471      </tr>
472
 
 
473      <tr>
 
474        <td class="strong"><a href="#c1031e9cfa93e88c31771d48c7f028aa73ee1612" class="src_link" title="spec/study_spec.rb">spec/study_spec.rb</a></td>
 
475        <td class="green strong">100.0 %</td>
476
 
476        <td>36</td>
477
 
477        <td>18</td>
478
 
478        <td>18</td>
479
 
479        <td>0</td>
480
 
480        <td>1.6</td>
481
 
481      </tr>
482
 
 
483      <tr>
 
484        <td class="strong"><a href="#96719dae9095d0a6031e9b71e3391eb41f566618" class="src_link" title="spec/survey_spec.rb">spec/survey_spec.rb</a></td>
 
485        <td class="green strong">100.0 %</td>
486
 
486        <td>69</td>
487
 
487        <td>41</td>
488
 
488        <td>41</td>
489
 
489        <td>0</td>
490
 
490        <td>1.1</td>
491
 
491      </tr>
492
 
 
493      <tr>
 
494        <td class="strong"><a href="#32deb9596e94ea87afe965e05dac2003eb172634" class="src_link" title="spec/user_spec.rb">spec/user_spec.rb</a></td>
 
495        <td class="green strong">100.0 %</td>
496
 
496        <td>61</td>
497
 
497        <td>34</td>
498
 
498        <td>34</td>
499
 
499        <td>0</td>
500
 
500        <td>1.5</td>
501
 
501      </tr>
502
 
 
503      <tr>
 
504        <td class="strong"><a href="#9c4508e3e891915a571ba8a71876acb876b5e5fb" class="src_link" title="spec/user_survey_spec.rb">spec/user_survey_spec.rb</a></td>
 
505        <td class="green strong">100.0 %</td>
506
 
506        <td>51</td>
507
 
507        <td>25</td>
508
 
508        <td>25</td>
509
 
509        <td>0</td>
510
 
510        <td>2.4</td>
511
 
511      </tr>
512
 
 
513      <tr>
 
514        <td class="strong"><a href="#a4a3b4c1a34a6a1fa51b9a49e4524914395eb07d" class="src_link" title="spec/visit_spec.rb">spec/visit_spec.rb</a></td>
 
515        <td class="green strong">100.0 %</td>
516
 
516        <td>78</td>
517
 
517        <td>48</td>
518
 
518        <td>48</td>
519
 
519        <td>0</td>
520
 
520        <td>2.1</td>
521
 
521      </tr>
522
 
 
523    </tbody>
524
 
524  </table>
525
 
525</div>
526
 
 
 
 
529      </div>
530
 
 
531      <div id="footer">
 
532        Generated by <a href="http://github.com/colszowka/simplecov">simplecov</a> v0.15.1 
533
 
533        and simplecov-html v0.10.2<br/>
 
534        using Unit Tests
 
535      </div>
536
 
 
537      <div class="source_files">
 
 
539        <div class="source_table" id="da3dc08a4f6630002c60b8c77f668c019098f4ea">
 
540  <div class="header">
 
541    <h3>db/seeds.rb</h3>
542
 
542    <h4><span class="green">100.0 %</span> covered</h4>
 
543    <div>
 
544      <b>5</b> relevant lines. 
545
 
545      <span class="green"><b>5</b> lines covered</span> and
 
546      <span class="red"><b>0</b> lines missed.</span>
 
547    </div>
548
 
548  </div>
549
 
 
550  <pre>
 
551    <ol>
 
 
553        <li class="never" data-hits="" data-linenumber="1">
 
 
 
556          <code class="ruby"># frozen_string_literal: true</code>
 
557        </li>
558
 
 
559        <li class="never" data-hits="" data-linenumber="2">
 
 
 
562          <code class="ruby"></code>
563
 
563        </li>
564
 
 
565        <li class="covered" data-hits="1" data-linenumber="3">
 
566          <span class="hits">1</span>
567
 
 
568          <code class="ruby">[&#39;all&#39;, ENV[&#39;RACK_ENV&#39;]].each do |seed|</code>
 
569        </li>
570
 
 
571        <li class="covered" data-hits="2" data-linenumber="4">
 
572          <span class="hits">2</span>
573
 
 
574          <code class="ruby">  seed_file = &quot;./db/seeds/#{seed}.rb&quot;</code>
 
575        </li>
576
 
 
577        <li class="covered" data-hits="2" data-linenumber="5">
 
578          <span class="hits">2</span>
579
 
 
580          <code class="ruby">  if File.exist?(seed_file)</code>
581
 
581        </li>
582
 
 
583        <li class="covered" data-hits="2" data-linenumber="6">
 
584          <span class="hits">2</span>
585
 
 
586          <code class="ruby">    puts &quot;*** Loading #{seed} seed data&quot;</code>
 
587        </li>
588
 
 
589        <li class="covered" data-hits="2" data-linenumber="7">
 
590          <span class="hits">2</span>
591
 
 
592          <code class="ruby">    require seed_file</code>
593
 
593        </li>
594
 
 
595        <li class="never" data-hits="" data-linenumber="8">
 
 
 
598          <code class="ruby">  end</code>
599
 
599        </li>
600
 
 
601        <li class="never" data-hits="" data-linenumber="9">
 
 
 
604          <code class="ruby">end</code>
605
 
605        </li>
606
 
 
607    </ol>
608
 
608  </pre>
609
 
609</div>
610
 
 
 
612        <div class="source_table" id="692d5557b55c4fca9eceb290449853f4fcb3589c">
 
613  <div class="header">
 
614    <h3>db/seeds/all.rb</h3>
615
 
615    <h4><span class="green">100.0 %</span> covered</h4>
 
616    <div>
 
617      <b>10</b> relevant lines. 
618
 
618      <span class="green"><b>10</b> lines covered</span> and
 
619      <span class="red"><b>0</b> lines missed.</span>
 
620    </div>
621
 
621  </div>
622
 
 
623  <pre>
 
624    <ol>
 
 
626        <li class="never" data-hits="" data-linenumber="1">
 
 
 
629          <code class="ruby"># frozen_string_literal: true</code>
 
630        </li>
631
 
 
632        <li class="never" data-hits="" data-linenumber="2">
 
 
 
635          <code class="ruby"></code>
636
 
636        </li>
637
 
 
638        <li class="covered" data-hits="1" data-linenumber="3">
 
639          <span class="hits">1</span>
640
 
 
641          <code class="ruby">require &#39;json&#39;</code>
 
642        </li>
643
 
 
644        <li class="covered" data-hits="1" data-linenumber="4">
 
645          <span class="hits">1</span>
646
 
 
647          <code class="ruby">require &#39;oj&#39;</code>
 
648        </li>
649
 
 
650        <li class="covered" data-hits="1" data-linenumber="5">
 
651          <span class="hits">1</span>
652
 
 
653          <code class="ruby">require &#39;multi_json&#39;</code>
 
654        </li>
655
 
 
656        <li class="covered" data-hits="1" data-linenumber="6">
 
657          <span class="hits">1</span>
658
 
 
659          <code class="ruby">require &#39;multi_json/adapters/oj&#39;</code>
 
660        </li>
661
 
 
662        <li class="covered" data-hits="1" data-linenumber="7">
 
663          <span class="hits">1</span>
664
 
 
665          <code class="ruby">require &#39;./services/instrument_loader&#39;</code>
 
666        </li>
667
 
 
668        <li class="never" data-hits="" data-linenumber="8">
 
 
 
671          <code class="ruby"></code>
672
 
672        </li>
673
 
 
674        <li class="covered" data-hits="1" data-linenumber="9">
 
675          <span class="hits">1</span>
676
 
 
677          <code class="ruby">json_data = File.read(&#39;./db/cesdr.json&#39;)</code>
 
678        </li>
679
 
 
680        <li class="covered" data-hits="1" data-linenumber="10">
 
681          <span class="hits">1</span>
682
 
 
683          <code class="ruby">json_hash = MultiJson.load(json_data)</code>
684
 
684        </li>
685
 
 
686        <li class="never" data-hits="" data-linenumber="11">
 
 
 
689          <code class="ruby"># Load cesd-r if not already loaded</code>
 
690        </li>
691
 
 
692        <li class="covered" data-hits="1" data-linenumber="12">
 
693          <span class="hits">1</span>
694
 
 
695          <code class="ruby">unless Instrument.find_by_name(&#39;Cesd-r&#39;)</code>
 
696        </li>
697
 
 
698        <li class="covered" data-hits="1" data-linenumber="13">
 
699          <span class="hits">1</span>
700
 
 
701          <code class="ruby">  instrument = Instrument.new(name: &#39;Cesd-r&#39;, content: json_hash)</code>
 
702        </li>
703
 
 
704        <li class="covered" data-hits="1" data-linenumber="14">
 
705          <span class="hits">1</span>
706
 
 
707          <code class="ruby">  InstrumentLoader.instance.load(instrument: instrument, overwrite: true)</code>
708
 
708        </li>
709
 
 
710        <li class="never" data-hits="" data-linenumber="15">
 
 
 
713          <code class="ruby">end</code>
714
 
714        </li>
715
 
 
716    </ol>
717
 
717  </pre>
718
 
718</div>
719
 
 
 
721        <div class="source_table" id="e209895f070bfcb89abcc649a8c7b5d6cbdd7336">
 
722  <div class="header">
 
723    <h3>db/seeds/test.rb</h3>
724
 
724    <h4><span class="green">100.0 %</span> covered</h4>
 
725    <div>
 
726      <b>0</b> relevant lines. 
727
 
727      <span class="green"><b>0</b> lines covered</span> and
 
728      <span class="red"><b>0</b> lines missed.</span>
 
729    </div>
730
 
730  </div>
731
 
 
732  <pre>
 
733    <ol>
 
 
735        <li class="never" data-hits="" data-linenumber="1">
 
 
 
738          <code class="ruby"># frozen_string_literal: true</code>
 
739        </li>
740
 
 
741    </ol>
742
 
742  </pre>
743
 
743</div>
744
 
 
 
746        <div class="source_table" id="ff48b158555a0f25de06fe94ac0a61e19f67c469">
 
747  <div class="header">
 
748    <h3>models/alexa_helper.rb</h3>
749
 
749    <h4><span class="green">100.0 %</span> covered</h4>
 
750    <div>
 
751      <b>5</b> relevant lines. 
752
 
752      <span class="green"><b>5</b> lines covered</span> and
 
753      <span class="red"><b>0</b> lines missed.</span>
 
754    </div>
755
 
755  </div>
756
 
 
757  <pre>
 
758    <ol>
 
 
760        <li class="never" data-hits="" data-linenumber="1">
 
 
 
763          <code class="ruby"># frozen_string_literal: true</code>
 
764        </li>
765
 
 
766        <li class="never" data-hits="" data-linenumber="2">
 
 
 
769          <code class="ruby"></code>
770
 
770        </li>
771
 
 
772        <li class="never" data-hits="" data-linenumber="3">
 
 
 
775          <code class="ruby"># Static class to define Alexa&#39;s default help responses</code>
 
776        </li>
777
 
 
778        <li class="covered" data-hits="1" data-linenumber="4">
 
779          <span class="hits">1</span>
780
 
 
781          <code class="ruby">class AlexaHelper</code>
782
 
782        </li>
783
 
 
784        <li class="covered" data-hits="1" data-linenumber="5">
 
785          <span class="hits">1</span>
786
 
 
787          <code class="ruby">  DEFAULT_HELP_RESPONSE = &#39;TBD&#39;</code>
 
788        </li>
789
 
 
790        <li class="covered" data-hits="1" data-linenumber="6">
 
791          <span class="hits">1</span>
792
 
 
793          <code class="ruby">  DEFAULT_TESTNAME_SLOT = &#39;testname&#39;</code>
 
794        </li>
795
 
 
796        <li class="never" data-hits="" data-linenumber="7">
 
 
 
799          <code class="ruby"></code>
800
 
800        </li>
801
 
 
802        <li class="covered" data-hits="1" data-linenumber="8">
 
803          <span class="hits">1</span>
804
 
 
805          <code class="ruby">  def self.default_help_response</code>
806
 
806        </li>
807
 
 
808        <li class="covered" data-hits="1" data-linenumber="9">
 
809          <span class="hits">1</span>
810
 
 
811          <code class="ruby">    DEFAULT_HELP_RESPONSE</code>
812
 
812        </li>
813
 
 
814        <li class="never" data-hits="" data-linenumber="10">
 
 
 
817          <code class="ruby">  end</code>
818
 
818        </li>
819
 
 
820        <li class="never" data-hits="" data-linenumber="11">
 
 
 
823          <code class="ruby">end</code>
824
 
824        </li>
825
 
 
826    </ol>
827
 
827  </pre>
828
 
828</div>
829
 
 
 
831        <div class="source_table" id="2d018f3dd855cf9bc6f217b6a419d804c3d1d64b">
 
832  <div class="header">
 
833    <h3>models/application_record.rb</h3>
834
 
834    <h4><span class="green">100.0 %</span> covered</h4>
 
835    <div>
 
836      <b>6</b> relevant lines. 
837
 
837      <span class="green"><b>6</b> lines covered</span> and
 
838      <span class="red"><b>0</b> lines missed.</span>
 
839    </div>
840
 
840  </div>
841
 
 
842  <pre>
 
843    <ol>
 
 
845        <li class="never" data-hits="" data-linenumber="1">
 
 
 
848          <code class="ruby"># frozen_string_literal: true</code>
 
849        </li>
850
 
 
851        <li class="never" data-hits="" data-linenumber="2">
 
 
 
854          <code class="ruby"></code>
855
 
855        </li>
856
 
 
857        <li class="covered" data-hits="1" data-linenumber="3">
 
858          <span class="hits">1</span>
859
 
 
860          <code class="ruby">require &#39;./lib/app_constants&#39;</code>
 
861        </li>
862
 
 
863        <li class="never" data-hits="" data-linenumber="4">
 
 
 
866          <code class="ruby"></code>
867
 
867        </li>
868
 
 
869        <li class="never" data-hits="" data-linenumber="5">
 
 
 
872          <code class="ruby"># Abstract class to hold common methods for our models</code>
 
873        </li>
874
 
 
875        <li class="covered" data-hits="1" data-linenumber="6">
 
876          <span class="hits">1</span>
877
 
 
878          <code class="ruby">class ApplicationRecord &lt; ActiveRecord::Base</code>
879
 
879        </li>
880
 
 
881        <li class="covered" data-hits="1" data-linenumber="7">
 
882          <span class="hits">1</span>
883
 
 
884          <code class="ruby">  include AppConstants</code>
885
 
885        </li>
886
 
 
887        <li class="never" data-hits="" data-linenumber="8">
 
 
 
890          <code class="ruby">  </code>
891
 
891        </li>
892
 
 
893        <li class="covered" data-hits="1" data-linenumber="9">
 
894          <span class="hits">1</span>
895
 
 
896          <code class="ruby">  self.abstract_class = true</code>
897
 
897        </li>
898
 
 
899        <li class="never" data-hits="" data-linenumber="10">
 
 
 
902          <code class="ruby">  </code>
903
 
903        </li>
904
 
 
905        <li class="covered" data-hits="1" data-linenumber="11">
 
906          <span class="hits">1</span>
907
 
 
908          <code class="ruby">  def ==(other)</code>
909
 
909        </li>
910
 
 
911        <li class="covered" data-hits="213" data-linenumber="12">
 
912          <span class="hits">213</span>
913
 
 
914          <code class="ruby">    attributes == other.attributes</code>
915
 
915        </li>
916
 
 
917        <li class="never" data-hits="" data-linenumber="13">
 
 
 
920          <code class="ruby">  end</code>
921
 
921        </li>
922
 
 
923        <li class="never" data-hits="" data-linenumber="14">
 
 
 
926          <code class="ruby">end</code>
927
 
927        </li>
928
 
 
929    </ol>
930
 
930  </pre>
931
 
931</div>
932
 
 
 
934        <div class="source_table" id="a49246a2522a63add508e3b69d6d83db72135904">
 
935  <div class="header">
 
936    <h3>models/arm.rb</h3>
937
 
937    <h4><span class="green">100.0 %</span> covered</h4>
 
938    <div>
 
939      <b>15</b> relevant lines. 
940
 
940      <span class="green"><b>15</b> lines covered</span> and
 
941      <span class="red"><b>0</b> lines missed.</span>
 
942    </div>
943
 
943  </div>
944
 
 
945  <pre>
 
946    <ol>
 
 
948        <li class="never" data-hits="" data-linenumber="1">
 
 
 
951          <code class="ruby"># frozen_string_literal: true</code>
 
952        </li>
953
 
 
954        <li class="never" data-hits="" data-linenumber="2">
 
 
 
957          <code class="ruby"></code>
958
 
958        </li>
959
 
 
960        <li class="never" data-hits="" data-linenumber="3">
 
 
 
963          <code class="ruby"># Model to represent a study arm</code>
 
964        </li>
965
 
 
966        <li class="covered" data-hits="1" data-linenumber="4">
 
967          <span class="hits">1</span>
968
 
 
969          <code class="ruby">class Arm &lt; ApplicationRecord</code>
970
 
970        </li>
971
 
 
972        <li class="covered" data-hits="1" data-linenumber="5">
 
973          <span class="hits">1</span>
974
 
 
975          <code class="ruby">  belongs_to :schedule, inverse_of: :arms </code>
976
 
976        </li>
977
 
 
978        <li class="covered" data-hits="1" data-linenumber="6">
 
979          <span class="hits">1</span>
980
 
 
981          <code class="ruby">  delegate :study, to: :schedule, allow_nil: true</code>
982
 
982        </li>
983
 
 
984        <li class="covered" data-hits="1" data-linenumber="7">
 
985          <span class="hits">1</span>
986
 
 
987          <code class="ruby">  has_many :study_events</code>
988
 
988        </li>
989
 
 
990        <li class="never" data-hits="" data-linenumber="8">
 
 
 
993          <code class="ruby">  </code>
994
 
994        </li>
995
 
 
996        <li class="covered" data-hits="1" data-linenumber="9">
 
997          <span class="hits">1</span>
998
 
 
 999          <code class="ruby">  validates :name, presence: true</code>
1000
 
1000        </li>
1001
 
 
1002        <li class="covered" data-hits="1" data-linenumber="10">
 
1003          <span class="hits">1</span>
1004
 
 
1005          <code class="ruby">  validates :schedule, presence: true</code>
1006
 
1006        </li>
1007
 
 
1008        <li class="covered" data-hits="1" data-linenumber="11">
 
1009          <span class="hits">1</span>
1010
 
 
1011          <code class="ruby">  validates_uniqueness_of :number, scope: %i[schedule] </code>
1012
 
1012        </li>
1013
 
 
1014        <li class="covered" data-hits="1" data-linenumber="12">
 
1015          <span class="hits">1</span>
1016
 
 
1017          <code class="ruby">  validates :number, presence: true, allow_blank: false</code>
1018
 
1018        </li>
1019
 
 
1020        <li class="covered" data-hits="1" data-linenumber="13">
 
1021          <span class="hits">1</span>
1022
 
 
1023          <code class="ruby">  validates :number, numericality: { only_integer: true, greater_than_or_equal_to: 1, less_than_or_equal_to: 10_000 }</code>
1024
 
1024        </li>
1025
 
 
1026        <li class="never" data-hits="" data-linenumber="14">
 
 
 
1029          <code class="ruby"></code>
1030
 
1030        </li>
1031
 
 
1032        <li class="covered" data-hits="1" data-linenumber="15">
 
1033          <span class="hits">1</span>
1034
 
 
1035          <code class="ruby">  before_validation :add_name_if_missing</code>
1036
 
1036        </li>
1037
 
 
1038        <li class="never" data-hits="" data-linenumber="16">
 
 
 
1041          <code class="ruby"></code>
1042
 
1042        </li>
1043
 
 
1044        <li class="covered" data-hits="1" data-linenumber="17">
 
1045          <span class="hits">1</span>
1046
 
 
1047          <code class="ruby">  def to_s</code>
1048
 
1048        </li>
1049
 
 
1050        <li class="covered" data-hits="5" data-linenumber="18">
 
1051          <span class="hits">5</span>
1052
 
 
1053          <code class="ruby">    &quot;#{study} #{schedule} #{name} #{number}&quot;</code>
 
1054        </li>
1055
 
 
1056        <li class="never" data-hits="" data-linenumber="19">
 
 
 
1059          <code class="ruby">  end</code>
1060
 
1060        </li>
1061
 
 
1062        <li class="never" data-hits="" data-linenumber="20">
 
 
 
1065          <code class="ruby"></code>
1066
 
1066        </li>
1067
 
 
1068        <li class="covered" data-hits="1" data-linenumber="21">
 
1069          <span class="hits">1</span>
1070
 
 
1071          <code class="ruby">  private</code>
1072
 
1072        </li>
1073
 
 
1074        <li class="never" data-hits="" data-linenumber="22">
 
 
 
1077          <code class="ruby"></code>
1078
 
1078        </li>
1079
 
 
1080        <li class="covered" data-hits="1" data-linenumber="23">
 
1081          <span class="hits">1</span>
1082
 
 
1083          <code class="ruby">  def add_name_if_missing</code>
1084
 
1084        </li>
1085
 
 
1086        <li class="covered" data-hits="6" data-linenumber="24">
 
1087          <span class="hits">6</span>
1088
 
 
1089          <code class="ruby">    self.name ||= &#39;arm &#39; + number.to_s</code>
 
1090        </li>
1091
 
 
1092        <li class="never" data-hits="" data-linenumber="25">
 
 
 
1095          <code class="ruby">  end</code>
1096
 
1096        </li>
1097
 
 
1098        <li class="never" data-hits="" data-linenumber="26">
 
 
 
1101          <code class="ruby">end</code>
1102
 
1102        </li>
1103
 
 
1104    </ol>
1105
 
1105  </pre>
1106
 
1106</div>
1107
 
 
 
1109        <div class="source_table" id="f8c1f4dc84acdf57617d8d4510ec7033ef413e66">
 
1110  <div class="header">
 
1111    <h3>models/assessment.rb</h3>
1112
 
1112    <h4><span class="green">100.0 %</span> covered</h4>
 
1113    <div>
 
1114      <b>12</b> relevant lines. 
1115
 
1115      <span class="green"><b>12</b> lines covered</span> and
 
1116      <span class="red"><b>0</b> lines missed.</span>
 
1117    </div>
1118
 
1118  </div>
1119
 
 
1120  <pre>
 
1121    <ol>
 
 
1123        <li class="never" data-hits="" data-linenumber="1">
 
 
 
1126          <code class="ruby"># frozen_string_literal: true</code>
 
1127        </li>
1128
 
 
1129        <li class="never" data-hits="" data-linenumber="2">
 
 
 
1132          <code class="ruby"></code>
1133
 
1133        </li>
1134
 
 
1135        <li class="never" data-hits="" data-linenumber="3">
 
 
 
1138          <code class="ruby"># == Schema Information</code>
 
1139        </li>
1140
 
 
1141        <li class="never" data-hits="" data-linenumber="4">
 
 
 
1144          <code class="ruby">#</code>
 
1145        </li>
1146
 
 
1147        <li class="never" data-hits="" data-linenumber="5">
 
 
 
1150          <code class="ruby"># Table name: assessments</code>
 
1151        </li>
1152
 
 
1153        <li class="never" data-hits="" data-linenumber="6">
 
 
 
1156          <code class="ruby">#</code>
 
1157        </li>
1158
 
 
1159        <li class="never" data-hits="" data-linenumber="7">
 
 
 
1162          <code class="ruby">#  id         :integer          not null, primary key</code>
 
1163        </li>
1164
 
 
1165        <li class="never" data-hits="" data-linenumber="8">
 
 
 
1168          <code class="ruby">#  user_id    :integer          not null</code>
 
1169        </li>
1170
 
 
1171        <li class="never" data-hits="" data-linenumber="9">
 
 
 
1174          <code class="ruby">#  survey_id  :integer          not null</code>
 
1175        </li>
1176
 
 
1177        <li class="never" data-hits="" data-linenumber="10">
 
 
 
1180          <code class="ruby">#  content    :jsonb            not null</code>
 
1181        </li>
1182
 
 
1183        <li class="never" data-hits="" data-linenumber="11">
 
 
 
1186          <code class="ruby">#  created_at :datetime         default(2018-02-23 00:00:00 UTC), not null</code>
 
1187        </li>
1188
 
 
1189        <li class="never" data-hits="" data-linenumber="12">
 
 
 
1192          <code class="ruby">#  updated_at :datetime         default(2018-02-23 00:00:00 UTC), not null</code>
 
1193        </li>
1194
 
 
1195        <li class="never" data-hits="" data-linenumber="13">
 
 
 
1198          <code class="ruby">#</code>
 
1199        </li>
1200
 
 
1201        <li class="never" data-hits="" data-linenumber="14">
 
 
 
1204          <code class="ruby"></code>
1205
 
1205        </li>
1206
 
 
1207        <li class="never" data-hits="" data-linenumber="15">
 
 
 
1210          <code class="ruby"># Model to represent the user taking an instrument/questionnaire within a survey/campaign</code>
 
1211        </li>
1212
 
 
1213        <li class="covered" data-hits="1" data-linenumber="16">
 
1214          <span class="hits">1</span>
1215
 
 
1216          <code class="ruby">class Assessment &lt; ApplicationRecord</code>
1217
 
1217        </li>
1218
 
 
1219        <li class="never" data-hits="" data-linenumber="17">
 
 
 
1222          <code class="ruby">  # has_paper_trail</code>
 
1223        </li>
1224
 
 
1225        <li class="never" data-hits="" data-linenumber="18">
 
 
 
1228          <code class="ruby"></code>
1229
 
1229        </li>
1230
 
 
1231        <li class="covered" data-hits="1" data-linenumber="19">
 
1232          <span class="hits">1</span>
1233
 
 
1234          <code class="ruby">  belongs_to :visit, inverse_of: :assessments</code>
1235
 
1235        </li>
1236
 
 
1237        <li class="covered" data-hits="1" data-linenumber="20">
 
1238          <span class="hits">1</span>
1239
 
 
1240          <code class="ruby">  has_one :survey, through: :visit</code>
1241
 
1241        </li>
1242
 
 
1243        <li class="covered" data-hits="1" data-linenumber="21">
 
1244          <span class="hits">1</span>
1245
 
 
1246          <code class="ruby">  has_one :user, through: :visit</code>
1247
 
1247        </li>
1248
 
 
1249        <li class="covered" data-hits="1" data-linenumber="22">
 
1250          <span class="hits">1</span>
1251
 
 
1252          <code class="ruby">  has_many :instruments, through: :assessment_instruments</code>
1253
 
1253        </li>
1254
 
 
1255        <li class="covered" data-hits="1" data-linenumber="23">
 
1256          <span class="hits">1</span>
1257
 
 
1258          <code class="ruby">  has_many :assessment_instruments, inverse_of: :assessment, dependent: :destroy </code>
1259
 
1259        </li>
1260
 
 
1261        <li class="covered" data-hits="1" data-linenumber="24">
 
1262          <span class="hits">1</span>
1263
 
 
1264          <code class="ruby">  has_many :responses, inverse_of: :assessment, dependent: :destroy</code>
1265
 
1265        </li>
1266
 
 
1267        <li class="covered" data-hits="1" data-linenumber="25">
 
1268          <span class="hits">1</span>
1269
 
 
1270          <code class="ruby">  has_many :scores, inverse_of: :assessment, dependent: :destroy</code>
1271
 
1271        </li>
1272
 
 
1273        <li class="never" data-hits="" data-linenumber="26">
 
 
 
1276          <code class="ruby">  </code>
1277
 
1277        </li>
1278
 
 
1279        <li class="covered" data-hits="1" data-linenumber="27">
 
1280          <span class="hits">1</span>
1281
 
 
1282          <code class="ruby">  validates :visit, presence: true</code>
1283
 
1283        </li>
1284
 
 
1285        <li class="covered" data-hits="1" data-linenumber="28">
 
1286          <span class="hits">1</span>
1287
 
 
1288          <code class="ruby">  validates :order_number, presence: true</code>
1289
 
1289        </li>
1290
 
 
1291        <li class="never" data-hits="" data-linenumber="29">
 
 
 
1294          <code class="ruby"></code>
1295
 
1295        </li>
1296
 
 
1297        <li class="covered" data-hits="1" data-linenumber="30">
 
1298          <span class="hits">1</span>
1299
 
 
1300          <code class="ruby">  def to_s</code>
1301
 
1301        </li>
1302
 
 
1303        <li class="covered" data-hits="7" data-linenumber="31">
 
1304          <span class="hits">7</span>
1305
 
 
1306          <code class="ruby">    visit.to_s</code>
1307
 
1307        </li>
1308
 
 
1309        <li class="never" data-hits="" data-linenumber="32">
 
 
 
1312          <code class="ruby">  end</code>
1313
 
1313        </li>
1314
 
 
1315        <li class="never" data-hits="" data-linenumber="33">
 
 
 
1318          <code class="ruby">end</code>
1319
 
1319        </li>
1320
 
 
1321    </ol>
1322
 
1322  </pre>
1323
 
1323</div>
1324
 
 
 
1326        <div class="source_table" id="0c878ce3efc7ec0aa9e8d46b572d56c90690f23a">
 
1327  <div class="header">
 
1328    <h3>models/assessment_instrument.rb</h3>
1329
 
1329    <h4><span class="green">100.0 %</span> covered</h4>
 
1330    <div>
 
1331      <b>7</b> relevant lines. 
1332
 
1332      <span class="green"><b>7</b> lines covered</span> and
 
1333      <span class="red"><b>0</b> lines missed.</span>
 
1334    </div>
1335
 
1335  </div>
1336
 
 
1337  <pre>
 
1338    <ol>
 
 
1340        <li class="never" data-hits="" data-linenumber="1">
 
 
 
1343          <code class="ruby"># frozen_string_literal: true</code>
 
1344        </li>
1345
 
 
1346        <li class="never" data-hits="" data-linenumber="2">
 
 
 
1349          <code class="ruby"></code>
1350
 
1350        </li>
1351
 
 
1352        <li class="never" data-hits="" data-linenumber="3">
 
 
 
1355          <code class="ruby"># == Schema Information</code>
 
1356        </li>
1357
 
 
1358        <li class="never" data-hits="" data-linenumber="4">
 
 
 
1361          <code class="ruby"></code>
1362
 
1362        </li>
1363
 
 
1364        <li class="never" data-hits="" data-linenumber="5">
 
 
 
1367          <code class="ruby"># Table name: assessment_instruments</code>
 
1368        </li>
1369
 
 
1370        <li class="never" data-hits="" data-linenumber="6">
 
 
 
1373          <code class="ruby">#</code>
 
1374        </li>
1375
 
 
1376        <li class="never" data-hits="" data-linenumber="7">
 
 
 
1379          <code class="ruby">#  id            :integer          not null, primary key</code>
 
1380        </li>
1381
 
 
1382        <li class="never" data-hits="" data-linenumber="8">
 
 
 
1385          <code class="ruby">#  assessment_id :integer          not null</code>
 
1386        </li>
1387
 
 
1388        <li class="never" data-hits="" data-linenumber="9">
 
 
 
1391          <code class="ruby">#  instrument_id :integer          not null</code>
 
1392        </li>
1393
 
 
1394        <li class="never" data-hits="" data-linenumber="10">
 
 
 
1397          <code class="ruby"></code>
1398
 
1398        </li>
1399
 
 
1400        <li class="never" data-hits="" data-linenumber="11">
 
 
 
1403          <code class="ruby"># Association class between assessments and instruments</code>
 
1404        </li>
1405
 
 
1406        <li class="covered" data-hits="1" data-linenumber="12">
 
1407          <span class="hits">1</span>
1408
 
 
1409          <code class="ruby">class AssessmentInstrument &lt; ApplicationRecord</code>
1410
 
1410        </li>
1411
 
 
1412        <li class="never" data-hits="" data-linenumber="13">
 
 
 
1415          <code class="ruby">  # has_paper_trail</code>
 
1416        </li>
1417
 
 
1418        <li class="never" data-hits="" data-linenumber="14">
 
 
 
1421          <code class="ruby"></code>
1422
 
1422        </li>
1423
 
 
1424        <li class="covered" data-hits="1" data-linenumber="15">
 
1425          <span class="hits">1</span>
1426
 
 
1427          <code class="ruby">  belongs_to :assessment, inverse_of: :assessment_instruments</code>
1428
 
1428        </li>
1429
 
 
1430        <li class="covered" data-hits="1" data-linenumber="16">
 
1431          <span class="hits">1</span>
1432
 
 
1433          <code class="ruby">  belongs_to :instrument, inverse_of: :assessment_instruments</code>
1434
 
1434        </li>
1435
 
 
1436        <li class="never" data-hits="" data-linenumber="17">
 
 
 
1439          <code class="ruby"></code>
1440
 
1440        </li>
1441
 
 
1442        <li class="covered" data-hits="1" data-linenumber="18">
 
1443          <span class="hits">1</span>
1444
 
 
1445          <code class="ruby">  validates :assessment, presence: true</code>
1446
 
1446        </li>
1447
 
 
1448        <li class="covered" data-hits="1" data-linenumber="19">
 
1449          <span class="hits">1</span>
1450
 
 
1451          <code class="ruby">  validates :instrument, presence: true</code>
1452
 
1452        </li>
1453
 
 
1454        <li class="never" data-hits="" data-linenumber="20">
 
 
 
1457          <code class="ruby"></code>
1458
 
1458        </li>
1459
 
 
1460        <li class="covered" data-hits="1" data-linenumber="21">
 
1461          <span class="hits">1</span>
1462
 
 
1463          <code class="ruby">  def to_s</code>
1464
 
1464        </li>
1465
 
 
1466        <li class="covered" data-hits="1" data-linenumber="22">
 
1467          <span class="hits">1</span>
1468
 
 
1469          <code class="ruby">    &quot;#{assessment} #{instrument}&quot;</code>
 
1470        </li>
1471
 
 
1472        <li class="never" data-hits="" data-linenumber="23">
 
 
 
1475          <code class="ruby">  end</code>
1476
 
1476        </li>
1477
 
 
1478        <li class="never" data-hits="" data-linenumber="24">
 
 
 
1481          <code class="ruby">end</code>
1482
 
1482        </li>
1483
 
 
1484    </ol>
1485
 
1485  </pre>
1486
 
1486</div>
1487
 
 
 
1489        <div class="source_table" id="8ae75c72db7d4f5bffbd8b4bd6fa18d4fdfddcc2">
 
1490  <div class="header">
 
1491    <h3>models/choice.rb</h3>
1492
 
1492    <h4><span class="green">100.0 %</span> covered</h4>
 
1493    <div>
 
1494      <b>10</b> relevant lines. 
1495
 
1495      <span class="green"><b>10</b> lines covered</span> and
 
1496      <span class="red"><b>0</b> lines missed.</span>
 
1497    </div>
1498
 
1498  </div>
1499
 
 
1500  <pre>
 
1501    <ol>
 
 
1503        <li class="never" data-hits="" data-linenumber="1">
 
 
 
1506          <code class="ruby"># frozen_string_literal: true</code>
 
1507        </li>
1508
 
 
1509        <li class="never" data-hits="" data-linenumber="2">
 
 
 
1512          <code class="ruby"></code>
1513
 
1513        </li>
1514
 
 
1515        <li class="never" data-hits="" data-linenumber="3">
 
 
 
1518          <code class="ruby"># == Schema Information</code>
 
1519        </li>
1520
 
 
1521        <li class="never" data-hits="" data-linenumber="4">
 
 
 
1524          <code class="ruby"></code>
1525
 
1525        </li>
1526
 
 
1527        <li class="never" data-hits="" data-linenumber="5">
 
 
 
1530          <code class="ruby"># Table name: choices</code>
 
1531        </li>
1532
 
 
1533        <li class="never" data-hits="" data-linenumber="6">
 
 
 
1536          <code class="ruby">#</code>
 
1537        </li>
1538
 
 
1539        <li class="never" data-hits="" data-linenumber="7">
 
 
 
1542          <code class="ruby">#  id              :integer          not null, primary key</code>
 
1543        </li>
1544
 
 
1545        <li class="never" data-hits="" data-linenumber="8">
 
 
 
1548          <code class="ruby">#  response_scale_id :integer          not null</code>
 
1549        </li>
1550
 
 
1551        <li class="never" data-hits="" data-linenumber="9">
 
 
 
1554          <code class="ruby">#  value           :string           not null</code>
 
1555        </li>
1556
 
 
1557        <li class="never" data-hits="" data-linenumber="10">
 
 
 
1560          <code class="ruby">#  score           :integer          default(-1), not null</code>
 
1561        </li>
1562
 
 
1563        <li class="never" data-hits="" data-linenumber="11">
 
 
 
1566          <code class="ruby">#  description     :string           not null</code>
 
1567        </li>
1568
 
 
1569        <li class="never" data-hits="" data-linenumber="12">
 
 
 
1572          <code class="ruby">#</code>
 
1573        </li>
1574
 
 
1575        <li class="never" data-hits="" data-linenumber="13">
 
 
 
1578          <code class="ruby"></code>
1579
 
1579        </li>
1580
 
 
1581        <li class="never" data-hits="" data-linenumber="14">
 
 
 
1584          <code class="ruby"># Model to represent choices in a rating scale</code>
 
1585        </li>
1586
 
 
1587        <li class="covered" data-hits="1" data-linenumber="15">
 
1588          <span class="hits">1</span>
1589
 
 
1590          <code class="ruby">class Choice &lt; ApplicationRecord</code>
1591
 
1591        </li>
1592
 
 
1593        <li class="covered" data-hits="1" data-linenumber="16">
 
1594          <span class="hits">1</span>
1595
 
 
1596          <code class="ruby">  belongs_to :response_scale, inverse_of: :choices</code>
1597
 
1597        </li>
1598
 
 
1599        <li class="covered" data-hits="1" data-linenumber="17">
 
1600          <span class="hits">1</span>
1601
 
 
1602          <code class="ruby">  has_many :responses, inverse_of: :choice</code>
1603
 
1603        </li>
1604
 
 
1605        <li class="never" data-hits="" data-linenumber="18">
 
 
 
1608          <code class="ruby"></code>
1609
 
1609        </li>
1610
 
 
1611        <li class="covered" data-hits="1" data-linenumber="19">
 
1612          <span class="hits">1</span>
1613
 
 
1614          <code class="ruby">  validates :response_scale, presence: true</code>
1615
 
1615        </li>
1616
 
 
1617        <li class="covered" data-hits="1" data-linenumber="20">
 
1618          <span class="hits">1</span>
1619
 
 
1620          <code class="ruby">  validates :value, presence: true</code>
1621
 
1621        </li>
1622
 
 
1623        <li class="covered" data-hits="1" data-linenumber="21">
 
1624          <span class="hits">1</span>
1625
 
 
1626          <code class="ruby">  validates :description, presence: true</code>
1627
 
1627        </li>
1628
 
 
1629        <li class="covered" data-hits="1" data-linenumber="22">
 
1630          <span class="hits">1</span>
1631
 
 
1632          <code class="ruby">  validates_uniqueness_of :value, scope: :response_scale </code>
1633
 
1633        </li>
1634
 
 
1635        <li class="covered" data-hits="1" data-linenumber="23">
 
1636          <span class="hits">1</span>
1637
 
 
1638          <code class="ruby">  validates_numericality_of :score, message: &#39;is not a number&#39;</code>
 
1639        </li>
1640
 
 
1641        <li class="never" data-hits="" data-linenumber="24">
 
 
 
1644          <code class="ruby"></code>
1645
 
1645        </li>
1646
 
 
1647        <li class="covered" data-hits="1" data-linenumber="25">
 
1648          <span class="hits">1</span>
1649
 
 
1650          <code class="ruby">  def to_s</code>
1651
 
1651        </li>
1652
 
 
1653        <li class="covered" data-hits="1" data-linenumber="26">
 
1654          <span class="hits">1</span>
1655
 
 
1656          <code class="ruby">    &quot;#{response_scale} #{value} #{description}&quot;  </code>
 
1657        </li>
1658
 
 
1659        <li class="never" data-hits="" data-linenumber="27">
 
 
 
1662          <code class="ruby">  end</code>
1663
 
1663        </li>
1664
 
 
1665        <li class="never" data-hits="" data-linenumber="28">
 
 
 
1668          <code class="ruby">end</code>
1669
 
1669        </li>
1670
 
 
1671    </ol>
1672
 
1672  </pre>
1673
 
1673</div>
1674
 
 
 
1676        <div class="source_table" id="a16e0f61ae2ee23dfe2c8062e7e6644c04a2d48d">
 
1677  <div class="header">
 
1678    <h3>models/folder.rb</h3>
1679
 
1679    <h4><span class="green">100.0 %</span> covered</h4>
 
1680    <div>
 
1681      <b>7</b> relevant lines. 
1682
 
1682      <span class="green"><b>7</b> lines covered</span> and
 
1683      <span class="red"><b>0</b> lines missed.</span>
 
1684    </div>
1685
 
1685  </div>
1686
 
 
1687  <pre>
 
1688    <ol>
 
 
1690        <li class="never" data-hits="" data-linenumber="1">
 
 
 
1693          <code class="ruby"># frozen_string_literal: true</code>
 
1694        </li>
1695
 
 
1696        <li class="never" data-hits="" data-linenumber="2">
 
 
 
1699          <code class="ruby"></code>
1700
 
1700        </li>
1701
 
 
1702        <li class="never" data-hits="" data-linenumber="3">
 
 
 
1705          <code class="ruby"># Model to represent projects in a folder</code>
 
1706        </li>
1707
 
 
1708        <li class="covered" data-hits="1" data-linenumber="4">
 
1709          <span class="hits">1</span>
1710
 
 
1711          <code class="ruby">class Folder &lt; ApplicationRecord</code>
1712
 
1712        </li>
1713
 
 
1714        <li class="covered" data-hits="1" data-linenumber="5">
 
1715          <span class="hits">1</span>
1716
 
 
1717          <code class="ruby">  has_many :projects, inverse_of: :folder</code>
1718
 
1718        </li>
1719
 
 
1720        <li class="covered" data-hits="1" data-linenumber="6">
 
1721          <span class="hits">1</span>
1722
 
 
1723          <code class="ruby">  validates :name, presence: true</code>
1724
 
1724        </li>
1725
 
 
1726        <li class="covered" data-hits="1" data-linenumber="7">
 
1727          <span class="hits">1</span>
1728
 
 
1729          <code class="ruby">  validates_uniqueness_of :name</code>
1730
 
1730        </li>
1731
 
 
1732        <li class="covered" data-hits="1" data-linenumber="8">
 
1733          <span class="hits">1</span>
1734
 
 
1735          <code class="ruby">  validates_length_of :name, \</code>
1736
 
1736        </li>
1737
 
 
1738        <li class="never" data-hits="" data-linenumber="9">
 
 
 
1741          <code class="ruby">                      within: 2..50, \</code>
1742
 
1742        </li>
1743
 
 
1744        <li class="never" data-hits="" data-linenumber="10">
 
 
 
1747          <code class="ruby">                      too_long: &#39;pick a shorter name&#39;, \</code>
 
1748        </li>
1749
 
 
1750        <li class="never" data-hits="" data-linenumber="11">
 
 
 
1753          <code class="ruby">                      too_short: &#39;pick a longer name&#39;</code>
 
1754        </li>
1755
 
 
1756        <li class="never" data-hits="" data-linenumber="12">
 
 
 
1759          <code class="ruby"></code>
1760
 
1760        </li>
1761
 
 
1762        <li class="covered" data-hits="1" data-linenumber="13">
 
1763          <span class="hits">1</span>
1764
 
 
1765          <code class="ruby">  def to_s</code>
1766
 
1766        </li>
1767
 
 
1768        <li class="covered" data-hits="1" data-linenumber="14">
 
1769          <span class="hits">1</span>
1770
 
 
1771          <code class="ruby">    name</code>
1772
 
1772        </li>
1773
 
 
1774        <li class="never" data-hits="" data-linenumber="15">
 
 
 
1777          <code class="ruby">  end</code>
1778
 
1778        </li>
1779
 
 
1780        <li class="never" data-hits="" data-linenumber="16">
 
 
 
1783          <code class="ruby">end</code>
1784
 
1784        </li>
1785
 
 
1786    </ol>
1787
 
1787  </pre>
1788
 
1788</div>
1789
 
 
 
1791        <div class="source_table" id="2e6a217f45fe204e616e52437f8c27ef09aaedcb">
 
1792  <div class="header">
 
1793    <h3>models/init.rb</h3>
1794
 
1794    <h4><span class="green">100.0 %</span> covered</h4>
 
1795    <div>
 
1796      <b>21</b> relevant lines. 
1797
 
1797      <span class="green"><b>21</b> lines covered</span> and
 
1798      <span class="red"><b>0</b> lines missed.</span>
 
1799    </div>
1800
 
1800  </div>
1801
 
 
1802  <pre>
 
1803    <ol>
 
 
1805        <li class="never" data-hits="" data-linenumber="1">
 
 
 
1808          <code class="ruby"># frozen_string_literal: true</code>
 
1809        </li>
1810
 
 
1811        <li class="never" data-hits="" data-linenumber="2">
 
 
 
1814          <code class="ruby"></code>
1815
 
1815        </li>
1816
 
 
1817        <li class="covered" data-hits="1" data-linenumber="3">
 
1818          <span class="hits">1</span>
1819
 
 
1820          <code class="ruby">require_relative &#39;alexa_helper&#39;</code>
 
1821        </li>
1822
 
 
1823        <li class="covered" data-hits="1" data-linenumber="4">
 
1824          <span class="hits">1</span>
1825
 
 
1826          <code class="ruby">require_relative &#39;application_record&#39;</code>
 
1827        </li>
1828
 
 
1829        <li class="covered" data-hits="1" data-linenumber="5">
 
1830          <span class="hits">1</span>
1831
 
 
1832          <code class="ruby">require_relative &#39;arm&#39;</code>
 
1833        </li>
1834
 
 
1835        <li class="covered" data-hits="1" data-linenumber="6">
 
1836          <span class="hits">1</span>
1837
 
 
1838          <code class="ruby">require_relative &#39;assessment&#39;</code>
 
1839        </li>
1840
 
 
1841        <li class="covered" data-hits="1" data-linenumber="7">
 
1842          <span class="hits">1</span>
1843
 
 
1844          <code class="ruby">require_relative &#39;assessment_instrument&#39;</code>
 
1845        </li>
1846
 
 
1847        <li class="covered" data-hits="1" data-linenumber="8">
 
1848          <span class="hits">1</span>
1849
 
 
1850          <code class="ruby">require_relative &#39;choice&#39;</code>
 
1851        </li>
1852
 
 
1853        <li class="covered" data-hits="1" data-linenumber="9">
 
1854          <span class="hits">1</span>
1855
 
 
1856          <code class="ruby">require_relative &#39;folder&#39;</code>
 
1857        </li>
1858
 
 
1859        <li class="covered" data-hits="1" data-linenumber="10">
 
1860          <span class="hits">1</span>
1861
 
 
1862          <code class="ruby">require_relative &#39;instrument&#39;</code>
 
1863        </li>
1864
 
 
1865        <li class="covered" data-hits="1" data-linenumber="11">
 
1866          <span class="hits">1</span>
1867
 
 
1868          <code class="ruby">require_relative &#39;item&#39;</code>
 
1869        </li>
1870
 
 
1871        <li class="covered" data-hits="1" data-linenumber="12">
 
1872          <span class="hits">1</span>
1873
 
 
1874          <code class="ruby">require_relative &#39;project&#39;</code>
 
1875        </li>
1876
 
 
1877        <li class="covered" data-hits="1" data-linenumber="13">
 
1878          <span class="hits">1</span>
1879
 
 
1880          <code class="ruby">require_relative &#39;response&#39;</code>
 
1881        </li>
1882
 
 
1883        <li class="covered" data-hits="1" data-linenumber="14">
 
1884          <span class="hits">1</span>
1885
 
 
1886          <code class="ruby">require_relative &#39;response_scale&#39;</code>
 
1887        </li>
1888
 
 
1889        <li class="covered" data-hits="1" data-linenumber="15">
 
1890          <span class="hits">1</span>
1891
 
 
1892          <code class="ruby">require_relative &#39;schedule&#39;</code>
 
1893        </li>
1894
 
 
1895        <li class="covered" data-hits="1" data-linenumber="16">
 
1896          <span class="hits">1</span>
1897
 
 
1898          <code class="ruby">require_relative &#39;score&#39;</code>
 
1899        </li>
1900
 
 
1901        <li class="covered" data-hits="1" data-linenumber="17">
 
1902          <span class="hits">1</span>
1903
 
 
1904          <code class="ruby">require_relative &#39;study&#39;</code>
 
1905        </li>
1906
 
 
1907        <li class="covered" data-hits="1" data-linenumber="18">
 
1908          <span class="hits">1</span>
1909
 
 
1910          <code class="ruby">require_relative &#39;study_event&#39;</code>
 
1911        </li>
1912
 
 
1913        <li class="covered" data-hits="1" data-linenumber="19">
 
1914          <span class="hits">1</span>
1915
 
 
1916          <code class="ruby">require_relative &#39;study_event_instrument&#39;</code>
 
1917        </li>
1918
 
 
1919        <li class="covered" data-hits="1" data-linenumber="20">
 
1920          <span class="hits">1</span>
1921
 
 
1922          <code class="ruby">require_relative &#39;survey&#39;</code>
 
1923        </li>
1924
 
 
1925        <li class="covered" data-hits="1" data-linenumber="21">
 
1926          <span class="hits">1</span>
1927
 
 
1928          <code class="ruby">require_relative &#39;user&#39;</code>
 
1929        </li>
1930
 
 
1931        <li class="covered" data-hits="1" data-linenumber="22">
 
1932          <span class="hits">1</span>
1933
 
 
1934          <code class="ruby">require_relative &#39;user_survey&#39;</code>
 
1935        </li>
1936
 
 
1937        <li class="covered" data-hits="1" data-linenumber="23">
 
1938          <span class="hits">1</span>
1939
 
 
1940          <code class="ruby">require_relative &#39;visit&#39;</code>
 
1941        </li>
1942
 
 
1943    </ol>
1944
 
1944  </pre>
1945
 
1945</div>
1946
 
 
 
1948        <div class="source_table" id="69ff954048c07e6ed4615cc5b695e6a37ca424ca">
 
1949  <div class="header">
 
1950    <h3>models/instrument.rb</h3>
1951
 
1951    <h4><span class="green">100.0 %</span> covered</h4>
 
1952    <div>
 
1953      <b>17</b> relevant lines. 
1954
 
1954      <span class="green"><b>17</b> lines covered</span> and
 
1955      <span class="red"><b>0</b> lines missed.</span>
 
1956    </div>
1957
 
1957  </div>
1958
 
 
1959  <pre>
 
1960    <ol>
 
 
1962        <li class="never" data-hits="" data-linenumber="1">
 
 
 
1965          <code class="ruby"># frozen_string_literal: true</code>
 
1966        </li>
1967
 
 
1968        <li class="never" data-hits="" data-linenumber="2">
 
 
 
1971          <code class="ruby"></code>
1972
 
1972        </li>
1973
 
 
1974        <li class="never" data-hits="" data-linenumber="3">
 
 
 
1977          <code class="ruby"># == Schema Information</code>
 
1978        </li>
1979
 
 
1980        <li class="never" data-hits="" data-linenumber="4">
 
 
 
1983          <code class="ruby">#</code>
 
1984        </li>
1985
 
 
1986        <li class="never" data-hits="" data-linenumber="5">
 
 
 
1989          <code class="ruby"># Table name: instruments</code>
 
1990        </li>
1991
 
 
1992        <li class="never" data-hits="" data-linenumber="6">
 
 
 
1995          <code class="ruby">#</code>
 
1996        </li>
1997
 
 
1998        <li class="never" data-hits="" data-linenumber="7">
 
 
 
2001          <code class="ruby">#  id         :integer          not null, primary key</code>
 
2002        </li>
2003
 
 
2004        <li class="never" data-hits="" data-linenumber="8">
 
 
 
2007          <code class="ruby">#  name       :string           not null</code>
 
2008        </li>
2009
 
 
2010        <li class="never" data-hits="" data-linenumber="9">
 
 
 
2013          <code class="ruby">#  version    :string           not null</code>
 
2014        </li>
2015
 
 
2016        <li class="never" data-hits="" data-linenumber="10">
 
 
 
2019          <code class="ruby">#  content    :jsonb            not null</code>
 
2020        </li>
2021
 
 
2022        <li class="never" data-hits="" data-linenumber="11">
 
 
 
2025          <code class="ruby">#  created_at :datetime         default(2018-02-23 00:00:00 UTC), not null</code>
 
2026        </li>
2027
 
 
2028        <li class="never" data-hits="" data-linenumber="12">
 
 
 
2031          <code class="ruby">#  updated_at :datetime         default(2018-02-23 00:00:00 UTC), not null</code>
 
2032        </li>
2033
 
 
2034        <li class="never" data-hits="" data-linenumber="13">
 
 
 
2037          <code class="ruby"></code>
2038
 
2038        </li>
2039
 
 
2040        <li class="covered" data-hits="1" data-linenumber="14">
 
2041          <span class="hits">1</span>
2042
 
 
2043          <code class="ruby">require &#39;acts-as-taggable-array-on&#39;</code>
 
2044        </li>
2045
 
 
2046        <li class="covered" data-hits="1" data-linenumber="15">
 
2047          <span class="hits">1</span>
2048
 
 
2049          <code class="ruby">require &#39;jsonb_accessor&#39;</code>
 
2050        </li>
2051
 
 
2052        <li class="never" data-hits="" data-linenumber="16">
 
 
 
2055          <code class="ruby"></code>
2056
 
2056        </li>
2057
 
 
2058        <li class="never" data-hits="" data-linenumber="17">
 
 
 
2061          <code class="ruby"># Represents a psychometric instrument</code>
 
2062        </li>
2063
 
 
2064        <li class="never" data-hits="" data-linenumber="18">
 
 
 
2067          <code class="ruby"># Similar to a survey or questionnaire</code>
 
2068        </li>
2069
 
 
2070        <li class="covered" data-hits="1" data-linenumber="19">
 
2071          <span class="hits">1</span>
2072
 
 
2073          <code class="ruby">class Instrument &lt; ApplicationRecord</code>
2074
 
2074        </li>
2075
 
 
2076        <li class="never" data-hits="" data-linenumber="20">
 
 
 
2079          <code class="ruby">  # has_paper_trail</code>
 
2080        </li>
2081
 
 
2082        <li class="covered" data-hits="1" data-linenumber="21">
 
2083          <span class="hits">1</span>
2084
 
 
2085          <code class="ruby">  acts_as_taggable_array_on :tags</code>
2086
 
2086        </li>
2087
 
 
2088        <li class="never" data-hits="" data-linenumber="22">
 
 
 
2091          <code class="ruby"></code>
2092
 
2092        </li>
2093
 
 
2094        <li class="covered" data-hits="1" data-linenumber="23">
 
2095          <span class="hits">1</span>
2096
 
 
2097          <code class="ruby">  has_many :assessment_instruments, inverse_of: :instrument, dependent: :destroy</code>
2098
 
2098        </li>
2099
 
 
2100        <li class="covered" data-hits="1" data-linenumber="24">
 
2101          <span class="hits">1</span>
2102
 
 
2103          <code class="ruby">  has_many :study_event_instruments, inverse_of: :instrument, dependent: :destroy</code>
2104
 
2104        </li>
2105
 
 
2106        <li class="covered" data-hits="1" data-linenumber="25">
 
2107          <span class="hits">1</span>
2108
 
 
2109          <code class="ruby">  has_many :assessments, inverse_of: :instrument, through: :assessment_instruments</code>
2110
 
2110        </li>
2111
 
 
2112        <li class="covered" data-hits="1" data-linenumber="26">
 
2113          <span class="hits">1</span>
2114
 
 
2115          <code class="ruby">  has_many :study_events, inverse_of: :instrument, through: :study_event_instruments</code>
2116
 
2116        </li>
2117
 
 
2118        <li class="covered" data-hits="1" data-linenumber="27">
 
2119          <span class="hits">1</span>
2120
 
 
2121          <code class="ruby">  has_many :items, inverse_of: :instrument, dependent: :destroy</code>
2122
 
2122        </li>
2123
 
 
2124        <li class="never" data-hits="" data-linenumber="28">
 
 
 
2127          <code class="ruby">  </code>
2128
 
2128        </li>
2129
 
 
2130        <li class="covered" data-hits="1" data-linenumber="29">
 
2131          <span class="hits">1</span>
2132
 
 
2133          <code class="ruby">  jsonb_accessor :content,</code>
2134
 
2134        </li>
2135
 
 
2136        <li class="never" data-hits="" data-linenumber="30">
 
 
 
2139          <code class="ruby">                 title: [:string, default: &#39;Untitled&#39;],</code>
 
2140        </li>
2141
 
 
2142        <li class="never" data-hits="" data-linenumber="31">
 
 
 
2145          <code class="ruby">                 pages: [:jsonb, array: true, default: []]</code>
2146
 
2146        </li>
2147
 
 
2148        <li class="never" data-hits="" data-linenumber="32">
 
 
 
2151          <code class="ruby">  </code>
2152
 
2152        </li>
2153
 
 
2154        <li class="covered" data-hits="1" data-linenumber="33">
 
2155          <span class="hits">1</span>
2156
 
 
2157          <code class="ruby">  validates :name, presence: true</code>
2158
 
2158        </li>
2159
 
 
2160        <li class="covered" data-hits="1" data-linenumber="34">
 
2161          <span class="hits">1</span>
2162
 
 
2163          <code class="ruby">  validates_uniqueness_of :name</code>
2164
 
2164        </li>
2165
 
 
2166        <li class="covered" data-hits="1" data-linenumber="35">
 
2167          <span class="hits">1</span>
2168
 
 
2169          <code class="ruby">  validates_length_of :name, \</code>
2170
 
2170        </li>
2171
 
 
2172        <li class="never" data-hits="" data-linenumber="36">
 
 
 
2175          <code class="ruby">                      within: 2..50, \</code>
2176
 
2176        </li>
2177
 
 
2178        <li class="never" data-hits="" data-linenumber="37">
 
 
 
2181          <code class="ruby">                      too_long: &#39;pick a shorter name&#39;, \</code>
 
2182        </li>
2183
 
 
2184        <li class="never" data-hits="" data-linenumber="38">
 
 
 
2187          <code class="ruby">                      too_short: &#39;pick a longer name&#39;</code>
 
2188        </li>
2189
 
 
2190        <li class="never" data-hits="" data-linenumber="39">
 
 
 
2193          <code class="ruby"> </code>
2194
 
2194        </li>
2195
 
 
2196        <li class="covered" data-hits="1" data-linenumber="40">
 
2197          <span class="hits">1</span>
2198
 
 
2199          <code class="ruby">  def self.list_tests</code>
2200
 
2200        </li>
2201
 
 
2202        <li class="covered" data-hits="1" data-linenumber="41">
 
2203          <span class="hits">1</span>
2204
 
 
2205          <code class="ruby">    Instrument.all.join(&#39; &#39;)</code>
 
2206        </li>
2207
 
 
2208        <li class="never" data-hits="" data-linenumber="42">
 
 
 
2211          <code class="ruby">  end</code>
2212
 
2212        </li>
2213
 
 
2214        <li class="never" data-hits="" data-linenumber="43">
 
 
 
2217          <code class="ruby"></code>
2218
 
2218        </li>
2219
 
 
2220        <li class="covered" data-hits="1" data-linenumber="44">
 
2221          <span class="hits">1</span>
2222
 
 
2223          <code class="ruby">  def to_s</code>
2224
 
2224        </li>
2225
 
 
2226        <li class="covered" data-hits="7" data-linenumber="45">
 
2227          <span class="hits">7</span>
2228
 
 
2229          <code class="ruby">    name</code>
2230
 
2230        </li>
2231
 
 
2232        <li class="never" data-hits="" data-linenumber="46">
 
 
 
2235          <code class="ruby">  end</code>
2236
 
2236        </li>
2237
 
 
2238        <li class="never" data-hits="" data-linenumber="47">
 
 
 
2241          <code class="ruby">end</code>
2242
 
2242        </li>
2243
 
 
2244    </ol>
2245
 
2245  </pre>
2246
 
2246</div>
2247
 
 
 
2249        <div class="source_table" id="bc2520e3a08211a03bd451e53830f7e9329dd1a6">
 
2250  <div class="header">
 
2251    <h3>models/item.rb</h3>
2252
 
2252    <h4><span class="green">100.0 %</span> covered</h4>
 
2253    <div>
 
2254      <b>12</b> relevant lines. 
2255
 
2255      <span class="green"><b>12</b> lines covered</span> and
 
2256      <span class="red"><b>0</b> lines missed.</span>
 
2257    </div>
2258
 
2258  </div>
2259
 
 
2260  <pre>
 
2261    <ol>
 
 
2263        <li class="never" data-hits="" data-linenumber="1">
 
 
 
2266          <code class="ruby"># frozen_string_literal: true</code>
 
2267        </li>
2268
 
 
2269        <li class="never" data-hits="" data-linenumber="2">
 
 
 
2272          <code class="ruby"></code>
2273
 
2273        </li>
2274
 
 
2275        <li class="never" data-hits="" data-linenumber="3">
 
 
 
2278          <code class="ruby"># == Schema Information</code>
 
2279        </li>
2280
 
 
2281        <li class="never" data-hits="" data-linenumber="4">
 
 
 
2284          <code class="ruby"></code>
2285
 
2285        </li>
2286
 
 
2287        <li class="never" data-hits="" data-linenumber="5">
 
 
 
2290          <code class="ruby"># Table name: items</code>
 
2291        </li>
2292
 
 
2293        <li class="never" data-hits="" data-linenumber="6">
 
 
 
2296          <code class="ruby"></code>
2297
 
2297        </li>
2298
 
 
2299        <li class="never" data-hits="" data-linenumber="7">
 
 
 
2302          <code class="ruby">#  id              :integer          not null, primary key</code>
 
2303        </li>
2304
 
 
2305        <li class="never" data-hits="" data-linenumber="8">
 
 
 
2308          <code class="ruby">#  instrument_id   :integer          not null</code>
 
2309        </li>
2310
 
 
2311        <li class="never" data-hits="" data-linenumber="9">
 
 
 
2314          <code class="ruby">#  name            :string           not null</code>
 
2315        </li>
2316
 
 
2317        <li class="never" data-hits="" data-linenumber="10">
 
 
 
2320          <code class="ruby">#  item_type       :string           not null</code>
 
2321        </li>
2322
 
 
2323        <li class="never" data-hits="" data-linenumber="11">
 
 
 
2326          <code class="ruby">#  title           :string           not null</code>
 
2327        </li>
2328
 
 
2329        <li class="never" data-hits="" data-linenumber="12">
 
 
 
2332          <code class="ruby">#  response_scale_id :integer</code>
 
2333        </li>
2334
 
 
2335        <li class="never" data-hits="" data-linenumber="13">
 
 
 
2338          <code class="ruby">#  is_required     :boolean          default(TRUE), not null</code>
 
2339        </li>
2340
 
 
2341        <li class="never" data-hits="" data-linenumber="14">
 
 
 
2344          <code class="ruby">#</code>
 
2345        </li>
2346
 
 
2347        <li class="never" data-hits="" data-linenumber="15">
 
 
 
2350          <code class="ruby"></code>
2351
 
2351        </li>
2352
 
 
2353        <li class="never" data-hits="" data-linenumber="16">
 
 
 
2356          <code class="ruby"># Represents a psychometric item</code>
 
2357        </li>
2358
 
 
2359        <li class="never" data-hits="" data-linenumber="17">
 
 
 
2362          <code class="ruby"># Similar to a question with metadata</code>
 
2363        </li>
2364
 
 
2365        <li class="covered" data-hits="1" data-linenumber="18">
 
2366          <span class="hits">1</span>
2367
 
 
2368          <code class="ruby">class Item &lt; ApplicationRecord</code>
2369
 
2369        </li>
2370
 
 
2371        <li class="covered" data-hits="1" data-linenumber="19">
 
2372          <span class="hits">1</span>
2373
 
 
2374          <code class="ruby">  belongs_to :instrument, inverse_of: :items</code>
2375
 
2375        </li>
2376
 
 
2377        <li class="covered" data-hits="1" data-linenumber="20">
 
2378          <span class="hits">1</span>
2379
 
 
2380          <code class="ruby">  belongs_to :response_scale, inverse_of: :items, optional: true</code>
2381
 
2381        </li>
2382
 
 
2383        <li class="covered" data-hits="1" data-linenumber="21">
 
2384          <span class="hits">1</span>
2385
 
 
2386          <code class="ruby">  has_many :choices, through: :response_scale  </code>
2387
 
2387        </li>
2388
 
 
2389        <li class="covered" data-hits="1" data-linenumber="22">
 
2390          <span class="hits">1</span>
2391
 
 
2392          <code class="ruby">  validates :name, presence: true</code>
2393
 
2393        </li>
2394
 
 
2395        <li class="covered" data-hits="1" data-linenumber="23">
 
2396          <span class="hits">1</span>
2397
 
 
2398          <code class="ruby">  validates :instrument, presence: true</code>
2399
 
2399        </li>
2400
 
 
2401        <li class="covered" data-hits="1" data-linenumber="24">
 
2402          <span class="hits">1</span>
2403
 
 
2404          <code class="ruby">  validates_uniqueness_of :name</code>
2405
 
2405        </li>
2406
 
 
2407        <li class="covered" data-hits="1" data-linenumber="25">
 
2408          <span class="hits">1</span>
2409
 
 
2410          <code class="ruby">  validates_length_of :name, \</code>
2411
 
2411        </li>
2412
 
 
2413        <li class="never" data-hits="" data-linenumber="26">
 
 
 
2416          <code class="ruby">                      within: 2..20, \</code>
2417
 
2417        </li>
2418
 
 
2419        <li class="never" data-hits="" data-linenumber="27">
 
 
 
2422          <code class="ruby">                      too_long: &#39;pick a shorter name&#39;, \</code>
 
2423        </li>
2424
 
 
2425        <li class="never" data-hits="" data-linenumber="28">
 
 
 
2428          <code class="ruby">                      too_short: &#39;pick a longer name&#39;</code>
 
2429        </li>
2430
 
 
2431        <li class="never" data-hits="" data-linenumber="29">
 
 
 
2434          <code class="ruby">  </code>
2435
 
2435        </li>
2436
 
 
2437        <li class="covered" data-hits="1" data-linenumber="30">
 
2438          <span class="hits">1</span>
2439
 
 
2440          <code class="ruby">  def find_choice_by_value(value)</code>
2441
 
2441        </li>
2442
 
 
2443        <li class="covered" data-hits="1" data-linenumber="31">
 
2444          <span class="hits">1</span>
2445
 
 
2446          <code class="ruby">    choices.find_by_response_scale_id_and_value(response_scale.id, value)</code>
2447
 
2447        </li>
2448
 
 
2449        <li class="never" data-hits="" data-linenumber="32">
 
 
 
2452          <code class="ruby">  end</code>
2453
 
2453        </li>
2454
 
 
2455        <li class="never" data-hits="" data-linenumber="33">
 
 
 
2458          <code class="ruby"></code>
2459
 
2459        </li>
2460
 
 
2461        <li class="covered" data-hits="1" data-linenumber="34">
 
2462          <span class="hits">1</span>
2463
 
 
2464          <code class="ruby">  def to_s</code>
2465
 
2465        </li>
2466
 
 
2467        <li class="covered" data-hits="1" data-linenumber="35">
 
2468          <span class="hits">1</span>
2469
 
 
2470          <code class="ruby">    name</code>
2471
 
2471        </li>
2472
 
 
2473        <li class="never" data-hits="" data-linenumber="36">
 
 
 
2476          <code class="ruby">  end</code>
2477
 
2477        </li>
2478
 
 
2479        <li class="never" data-hits="" data-linenumber="37">
 
 
 
2482          <code class="ruby">end</code>
2483
 
2483        </li>
2484
 
 
2485    </ol>
2486
 
2486  </pre>
2487
 
2487</div>
2488
 
 
 
2490        <div class="source_table" id="de81724d1889d6b1b6f65da9a7032c92d4330275">
 
2491  <div class="header">
 
2492    <h3>models/project.rb</h3>
2493
 
2493    <h4><span class="green">100.0 %</span> covered</h4>
 
2494    <div>
 
2495      <b>11</b> relevant lines. 
2496
 
2496      <span class="green"><b>11</b> lines covered</span> and
 
2497      <span class="red"><b>0</b> lines missed.</span>
 
2498    </div>
2499
 
2499  </div>
2500
 
 
2501  <pre>
 
2502    <ol>
 
 
2504        <li class="never" data-hits="" data-linenumber="1">
 
 
 
2507          <code class="ruby"># frozen_string_literal: true</code>
 
2508        </li>
2509
 
 
2510        <li class="never" data-hits="" data-linenumber="2">
 
 
 
2513          <code class="ruby"></code>
2514
 
2514        </li>
2515
 
 
2516        <li class="never" data-hits="" data-linenumber="3">
 
 
 
2519          <code class="ruby"># Model to represent projects</code>
 
2520        </li>
2521
 
 
2522        <li class="covered" data-hits="1" data-linenumber="4">
 
2523          <span class="hits">1</span>
2524
 
 
2525          <code class="ruby">class Project &lt; ApplicationRecord</code>
2526
 
2526        </li>
2527
 
 
2528        <li class="covered" data-hits="1" data-linenumber="5">
 
2529          <span class="hits">1</span>
2530
 
 
2531          <code class="ruby">  has_one :folder, inverse_of: :projects</code>
2532
 
2532        </li>
2533
 
 
2534        <li class="never" data-hits="" data-linenumber="6">
 
 
 
2537          <code class="ruby"></code>
2538
 
2538        </li>
2539
 
 
2540        <li class="covered" data-hits="2" data-linenumber="7">
 
2541          <span class="hits">2</span>
2542
 
 
2543          <code class="ruby">  scope :active, -&gt; { where(archived: false) }</code>
2544
 
2544        </li>
2545
 
 
2546        <li class="never" data-hits="" data-linenumber="8">
 
 
 
2549          <code class="ruby"></code>
2550
 
2550        </li>
2551
 
 
2552        <li class="covered" data-hits="1" data-linenumber="9">
 
2553          <span class="hits">1</span>
2554
 
 
2555          <code class="ruby">  validates :name, presence: true</code>
2556
 
2556        </li>
2557
 
 
2558        <li class="covered" data-hits="1" data-linenumber="10">
 
2559          <span class="hits">1</span>
2560
 
 
2561          <code class="ruby">  validates :title, presence: true</code>
2562
 
2562        </li>
2563
 
 
2564        <li class="covered" data-hits="1" data-linenumber="11">
 
2565          <span class="hits">1</span>
2566
 
 
2567          <code class="ruby">  validates_uniqueness_of :name</code>
2568
 
2568        </li>
2569
 
 
2570        <li class="covered" data-hits="1" data-linenumber="12">
 
2571          <span class="hits">1</span>
2572
 
 
2573          <code class="ruby">  validates_length_of :name, \</code>
2574
 
2574        </li>
2575
 
 
2576        <li class="never" data-hits="" data-linenumber="13">
 
 
 
2579          <code class="ruby">                      within: 2..50, \</code>
2580
 
2580        </li>
2581
 
 
2582        <li class="never" data-hits="" data-linenumber="14">
 
 
 
2585          <code class="ruby">                      too_long: &#39;pick a shorter name&#39;, \</code>
 
2586        </li>
2587
 
 
2588        <li class="never" data-hits="" data-linenumber="15">
 
 
 
2591          <code class="ruby">                      too_short: &#39;pick a longer name&#39;</code>
 
2592        </li>
2593
 
 
2594        <li class="never" data-hits="" data-linenumber="16">
 
 
 
2597          <code class="ruby">  </code>
2598
 
2598        </li>
2599
 
 
2600        <li class="covered" data-hits="1" data-linenumber="17">
 
2601          <span class="hits">1</span>
2602
 
 
2603          <code class="ruby">  def self.list_active_projects</code>
2604
 
2604        </li>
2605
 
 
2606        <li class="covered" data-hits="1" data-linenumber="18">
 
2607          <span class="hits">1</span>
2608
 
 
2609          <code class="ruby">    Project.active.join(&#39; &#39;)</code>
 
2610        </li>
2611
 
 
2612        <li class="never" data-hits="" data-linenumber="19">
 
 
 
2615          <code class="ruby">  end                 </code>
2616
 
2616        </li>
2617
 
 
2618        <li class="never" data-hits="" data-linenumber="20">
 
 
 
2621          <code class="ruby"></code>
2622
 
2622        </li>
2623
 
 
2624        <li class="covered" data-hits="1" data-linenumber="21">
 
2625          <span class="hits">1</span>
2626
 
 
2627          <code class="ruby">  def to_s</code>
2628
 
2628        </li>
2629
 
 
2630        <li class="covered" data-hits="5" data-linenumber="22">
 
2631          <span class="hits">5</span>
2632
 
 
2633          <code class="ruby">    name</code>
2634
 
2634        </li>
2635
 
 
2636        <li class="never" data-hits="" data-linenumber="23">
 
 
 
2639          <code class="ruby">  end</code>
2640
 
2640        </li>
2641
 
 
2642        <li class="never" data-hits="" data-linenumber="24">
 
 
 
2645          <code class="ruby">end</code>
2646
 
2646        </li>
2647
 
 
2648    </ol>
2649
 
2649  </pre>
2650
 
2650</div>
2651
 
 
 
2653        <div class="source_table" id="fdaa8bd0bc68551d6bf2dd3ca43a82faf8834fc9">
 
2654  <div class="header">
 
2655    <h3>models/response.rb</h3>
2656
 
2656    <h4><span class="green">100.0 %</span> covered</h4>
 
2657    <div>
 
2658      <b>7</b> relevant lines. 
2659
 
2659      <span class="green"><b>7</b> lines covered</span> and
 
2660      <span class="red"><b>0</b> lines missed.</span>
 
2661    </div>
2662
 
2662  </div>
2663
 
 
2664  <pre>
 
2665    <ol>
 
 
2667        <li class="never" data-hits="" data-linenumber="1">
 
 
 
2670          <code class="ruby"># frozen_string_literal: true</code>
 
2671        </li>
2672
 
 
2673        <li class="never" data-hits="" data-linenumber="2">
 
 
 
2676          <code class="ruby"></code>
2677
 
2677        </li>
2678
 
 
2679        <li class="never" data-hits="" data-linenumber="3">
 
 
 
2682          <code class="ruby"># == Schema Information</code>
 
2683        </li>
2684
 
 
2685        <li class="never" data-hits="" data-linenumber="4">
 
 
 
2688          <code class="ruby">#</code>
 
2689        </li>
2690
 
 
2691        <li class="never" data-hits="" data-linenumber="5">
 
 
 
2694          <code class="ruby"># Table name: responses</code>
 
2695        </li>
2696
 
 
2697        <li class="never" data-hits="" data-linenumber="6">
 
 
 
2700          <code class="ruby">#</code>
 
2701        </li>
2702
 
 
2703        <li class="never" data-hits="" data-linenumber="7">
 
 
 
2706          <code class="ruby">#  id            :integer          not null, primary key</code>
 
2707        </li>
2708
 
 
2709        <li class="never" data-hits="" data-linenumber="8">
 
 
 
2712          <code class="ruby">#  assessment_id :integer          not null</code>
 
2713        </li>
2714
 
 
2715        <li class="never" data-hits="" data-linenumber="9">
 
 
 
2718          <code class="ruby">#  score         :integer          default(-1), not null</code>
 
2719        </li>
2720
 
 
2721        <li class="never" data-hits="" data-linenumber="10">
 
 
 
2724          <code class="ruby">#  value         :string           default(&quot;&quot;), not null</code>
 
2725        </li>
2726
 
 
2727        <li class="never" data-hits="" data-linenumber="11">
 
 
 
2730          <code class="ruby">#</code>
 
2731        </li>
2732
 
 
2733        <li class="never" data-hits="" data-linenumber="12">
 
 
 
2736          <code class="ruby"></code>
2737
 
2737        </li>
2738
 
 
2739        <li class="never" data-hits="" data-linenumber="13">
 
 
 
2742          <code class="ruby"># Model to represent a response to an item</code>
 
2743        </li>
2744
 
 
2745        <li class="covered" data-hits="1" data-linenumber="14">
 
2746          <span class="hits">1</span>
2747
 
 
2748          <code class="ruby">class Response &lt; ApplicationRecord</code>
2749
 
2749        </li>
2750
 
 
2751        <li class="covered" data-hits="1" data-linenumber="15">
 
2752          <span class="hits">1</span>
2753
 
 
2754          <code class="ruby">  belongs_to :assessment, inverse_of: :responses</code>
2755
 
2755        </li>
2756
 
 
2757        <li class="covered" data-hits="1" data-linenumber="16">
 
2758          <span class="hits">1</span>
2759
 
 
2760          <code class="ruby">  belongs_to :choice, optional: true</code>
2761
 
2761        </li>
2762
 
 
2763        <li class="never" data-hits="" data-linenumber="17">
 
 
 
2766          <code class="ruby"></code>
2767
 
2767        </li>
2768
 
 
2769        <li class="covered" data-hits="1" data-linenumber="18">
 
2770          <span class="hits">1</span>
2771
 
 
2772          <code class="ruby">  validates :assessment, presence: true</code>
2773
 
2773        </li>
2774
 
 
2775        <li class="covered" data-hits="1" data-linenumber="19">
 
2776          <span class="hits">1</span>
2777
 
 
2778          <code class="ruby">  validates :value, presence: true</code>
2779
 
2779        </li>
2780
 
 
2781        <li class="never" data-hits="" data-linenumber="20">
 
 
 
2784          <code class="ruby"></code>
2785
 
2785        </li>
2786
 
 
2787        <li class="covered" data-hits="1" data-linenumber="21">
 
2788          <span class="hits">1</span>
2789
 
 
2790          <code class="ruby">  def to_s </code>
2791
 
2791        </li>
2792
 
 
2793        <li class="covered" data-hits="1" data-linenumber="22">
 
2794          <span class="hits">1</span>
2795
 
 
2796          <code class="ruby">    &quot;#{assessment} #{value}&quot;</code>
 
2797        </li>
2798
 
 
2799        <li class="never" data-hits="" data-linenumber="23">
 
 
 
2802          <code class="ruby">  end</code>
2803
 
2803        </li>
2804
 
 
2805        <li class="never" data-hits="" data-linenumber="24">
 
 
 
2808          <code class="ruby">end</code>
2809
 
2809        </li>
2810
 
 
2811    </ol>
2812
 
2812  </pre>
2813
 
2813</div>
2814
 
 
 
2816        <div class="source_table" id="83909dcc3eb7cfd3e0bbe12de679d6367cebeeba">
 
2817  <div class="header">
 
2818    <h3>models/response_scale.rb</h3>
2819
 
2819    <h4><span class="green">100.0 %</span> covered</h4>
 
2820    <div>
 
2821      <b>8</b> relevant lines. 
2822
 
2822      <span class="green"><b>8</b> lines covered</span> and
 
2823      <span class="red"><b>0</b> lines missed.</span>
 
2824    </div>
2825
 
2825  </div>
2826
 
 
2827  <pre>
 
2828    <ol>
 
 
2830        <li class="never" data-hits="" data-linenumber="1">
 
 
 
2833          <code class="ruby"># frozen_string_literal: true</code>
 
2834        </li>
2835
 
 
2836        <li class="never" data-hits="" data-linenumber="2">
 
 
 
2839          <code class="ruby"></code>
2840
 
2840        </li>
2841
 
 
2842        <li class="never" data-hits="" data-linenumber="3">
 
 
 
2845          <code class="ruby"># == Schema Information</code>
 
2846        </li>
2847
 
 
2848        <li class="never" data-hits="" data-linenumber="4">
 
 
 
2851          <code class="ruby"></code>
2852
 
2852        </li>
2853
 
 
2854        <li class="never" data-hits="" data-linenumber="5">
 
 
 
2857          <code class="ruby"># Table name: response_scales</code>
 
2858        </li>
2859
 
 
2860        <li class="never" data-hits="" data-linenumber="6">
 
 
 
2863          <code class="ruby">#</code>
 
2864        </li>
2865
 
 
2866        <li class="never" data-hits="" data-linenumber="7">
 
 
 
2869          <code class="ruby">#  id   :integer          not null, primary key</code>
 
2870        </li>
2871
 
 
2872        <li class="never" data-hits="" data-linenumber="8">
 
 
 
2875          <code class="ruby">#  name :string           not null</code>
 
2876        </li>
2877
 
 
2878        <li class="never" data-hits="" data-linenumber="9">
 
 
 
2881          <code class="ruby">#</code>
 
2882        </li>
2883
 
 
2884        <li class="never" data-hits="" data-linenumber="10">
 
 
 
2887          <code class="ruby"></code>
2888
 
2888        </li>
2889
 
 
2890        <li class="never" data-hits="" data-linenumber="11">
 
 
 
2893          <code class="ruby"># Model to represent a response to an item</code>
 
2894        </li>
2895
 
 
2896        <li class="covered" data-hits="1" data-linenumber="12">
 
2897          <span class="hits">1</span>
2898
 
 
2899          <code class="ruby">class ResponseScale &lt; ApplicationRecord</code>
2900
 
2900        </li>
2901
 
 
2902        <li class="covered" data-hits="1" data-linenumber="13">
 
2903          <span class="hits">1</span>
2904
 
 
2905          <code class="ruby">  has_many :choices, inverse_of: :response_scale, dependent: :destroy</code>
2906
 
2906        </li>
2907
 
 
2908        <li class="covered" data-hits="1" data-linenumber="14">
 
2909          <span class="hits">1</span>
2910
 
 
2911          <code class="ruby">  has_many :items, inverse_of: :response_scale</code>
2912
 
2912        </li>
2913
 
 
2914        <li class="covered" data-hits="1" data-linenumber="15">
 
2915          <span class="hits">1</span>
2916
 
 
2917          <code class="ruby">  validates :name, presence: true</code>
2918
 
2918        </li>
2919
 
 
2920        <li class="covered" data-hits="1" data-linenumber="16">
 
2921          <span class="hits">1</span>
2922
 
 
2923          <code class="ruby">  validates_uniqueness_of :name</code>
2924
 
2924        </li>
2925
 
 
2926        <li class="covered" data-hits="1" data-linenumber="17">
 
2927          <span class="hits">1</span>
2928
 
 
2929          <code class="ruby">  validates_length_of :name, \</code>
2930
 
2930        </li>
2931
 
 
2932        <li class="never" data-hits="" data-linenumber="18">
 
 
 
2935          <code class="ruby">                      within: 2..50, \</code>
2936
 
2936        </li>
2937
 
 
2938        <li class="never" data-hits="" data-linenumber="19">
 
 
 
2941          <code class="ruby">                      too_long: &#39;pick a shorter name&#39;, \</code>
 
2942        </li>
2943
 
 
2944        <li class="never" data-hits="" data-linenumber="20">
 
 
 
2947          <code class="ruby">                      too_short: &#39;pick a longer name&#39;</code>
 
2948        </li>
2949
 
 
2950        <li class="never" data-hits="" data-linenumber="21">
 
 
 
2953          <code class="ruby"></code>
2954
 
2954        </li>
2955
 
 
2956        <li class="covered" data-hits="1" data-linenumber="22">
 
2957          <span class="hits">1</span>
2958
 
 
2959          <code class="ruby">  def to_s</code>
2960
 
2960        </li>
2961
 
 
2962        <li class="covered" data-hits="3" data-linenumber="23">
 
2963          <span class="hits">3</span>
2964
 
 
2965          <code class="ruby">    name</code>
2966
 
2966        </li>
2967
 
 
2968        <li class="never" data-hits="" data-linenumber="24">
 
 
 
2971          <code class="ruby">  end</code>
2972
 
2972        </li>
2973
 
 
2974        <li class="never" data-hits="" data-linenumber="25">
 
 
 
2977          <code class="ruby">end</code>
2978
 
2978        </li>
2979
 
 
2980    </ol>
2981
 
2981  </pre>
2982
 
2982</div>
2983
 
 
 
2985        <div class="source_table" id="014f099aa4fef849b0ab2896e6cdefe35bf1f164">
 
2986  <div class="header">
 
2987    <h3>models/schedule.rb</h3>
2988
 
2988    <h4><span class="green">100.0 %</span> covered</h4>
 
2989    <div>
 
2990      <b>9</b> relevant lines. 
2991
 
2991      <span class="green"><b>9</b> lines covered</span> and
 
2992      <span class="red"><b>0</b> lines missed.</span>
 
2993    </div>
2994
 
2994  </div>
2995
 
 
2996  <pre>
 
2997    <ol>
 
 
2999        <li class="never" data-hits="" data-linenumber="1">
 
 
 
3002          <code class="ruby"># frozen_string_literal: true</code>
 
3003        </li>
3004
 
 
3005        <li class="never" data-hits="" data-linenumber="2">
 
 
 
3008          <code class="ruby"></code>
3009
 
3009        </li>
3010
 
 
3011        <li class="never" data-hits="" data-linenumber="3">
 
 
 
3014          <code class="ruby"># Model to represent visit schedules</code>
 
3015        </li>
3016
 
 
3017        <li class="covered" data-hits="1" data-linenumber="4">
 
3018          <span class="hits">1</span>
3019
 
 
3020          <code class="ruby">class Schedule &lt; ApplicationRecord</code>
3021
 
3021        </li>
3022
 
 
3023        <li class="covered" data-hits="1" data-linenumber="5">
 
3024          <span class="hits">1</span>
3025
 
 
3026          <code class="ruby">  belongs_to :study</code>
3027
 
3027        </li>
3028
 
 
3029        <li class="covered" data-hits="1" data-linenumber="6">
 
3030          <span class="hits">1</span>
3031
 
 
3032          <code class="ruby">  has_many :arms, inverse_of: :schedule</code>
3033
 
3033        </li>
3034
 
 
3035        <li class="never" data-hits="" data-linenumber="7">
 
 
 
3038          <code class="ruby"></code>
3039
 
3039        </li>
3040
 
 
3041        <li class="covered" data-hits="1" data-linenumber="8">
 
3042          <span class="hits">1</span>
3043
 
 
3044          <code class="ruby">  validates :name, presence: true</code>
3045
 
3045        </li>
3046
 
 
3047        <li class="covered" data-hits="1" data-linenumber="9">
 
3048          <span class="hits">1</span>
3049
 
 
3050          <code class="ruby">  validates :study, presence: true</code>
3051
 
3051        </li>
3052
 
 
3053        <li class="covered" data-hits="1" data-linenumber="10">
 
3054          <span class="hits">1</span>
3055
 
 
3056          <code class="ruby">  validates_uniqueness_of :name</code>
3057
 
3057        </li>
3058
 
 
3059        <li class="covered" data-hits="1" data-linenumber="11">
 
3060          <span class="hits">1</span>
3061
 
 
3062          <code class="ruby">  validates_length_of :name, \</code>
3063
 
3063        </li>
3064
 
 
3065        <li class="never" data-hits="" data-linenumber="12">
 
 
 
3068          <code class="ruby">                      within: 2..50, \</code>
3069
 
3069        </li>
3070
 
 
3071        <li class="never" data-hits="" data-linenumber="13">
 
 
 
3074          <code class="ruby">                      too_long: &#39;pick a shorter name&#39;, \</code>
 
3075        </li>
3076
 
 
3077        <li class="never" data-hits="" data-linenumber="14">
 
 
 
3080          <code class="ruby">                      too_short: &#39;pick a longer name&#39;</code>
 
3081        </li>
3082
 
 
3083        <li class="never" data-hits="" data-linenumber="15">
 
 
 
3086          <code class="ruby">  </code>
3087
 
3087        </li>
3088
 
 
3089        <li class="covered" data-hits="1" data-linenumber="16">
 
3090          <span class="hits">1</span>
3091
 
 
3092          <code class="ruby">  def to_s</code>
3093
 
3093        </li>
3094
 
 
3095        <li class="covered" data-hits="7" data-linenumber="17">
 
3096          <span class="hits">7</span>
3097
 
 
3098          <code class="ruby">    name</code>
3099
 
3099        </li>
3100
 
 
3101        <li class="never" data-hits="" data-linenumber="18">
 
 
 
3104          <code class="ruby">  end</code>
3105
 
3105        </li>
3106
 
 
3107        <li class="never" data-hits="" data-linenumber="19">
 
 
 
3110          <code class="ruby">end</code>
3111
 
3111        </li>
3112
 
 
3113    </ol>
3114
 
3114  </pre>
3115
 
3115</div>
3116
 
 
 
3118        <div class="source_table" id="d669f1b535c2bfa8cb712ec5408a6b919da14a67">
 
3119  <div class="header">
 
3120    <h3>models/score.rb</h3>
3121
 
3121    <h4><span class="green">100.0 %</span> covered</h4>
 
3122    <div>
 
3123      <b>11</b> relevant lines. 
3124
 
3124      <span class="green"><b>11</b> lines covered</span> and
 
3125      <span class="red"><b>0</b> lines missed.</span>
 
3126    </div>
3127
 
3127  </div>
3128
 
 
3129  <pre>
 
3130    <ol>
 
 
3132        <li class="never" data-hits="" data-linenumber="1">
 
 
 
3135          <code class="ruby"># frozen_string_literal: true</code>
 
3136        </li>
3137
 
 
3138        <li class="never" data-hits="" data-linenumber="2">
 
 
 
3141          <code class="ruby"></code>
3142
 
3142        </li>
3143
 
 
3144        <li class="never" data-hits="" data-linenumber="3">
 
 
 
3147          <code class="ruby"># Assessment scores and sub scores</code>
 
3148        </li>
3149
 
 
3150        <li class="covered" data-hits="1" data-linenumber="4">
 
3151          <span class="hits">1</span>
3152
 
 
3153          <code class="ruby">class Score &lt; ApplicationRecord</code>
3154
 
3154        </li>
3155
 
 
3156        <li class="covered" data-hits="1" data-linenumber="5">
 
3157          <span class="hits">1</span>
3158
 
 
3159          <code class="ruby">  belongs_to :assessment, inverse_of: :scores </code>
3160
 
3160        </li>
3161
 
 
3162        <li class="covered" data-hits="1" data-linenumber="6">
 
3163          <span class="hits">1</span>
3164
 
 
3165          <code class="ruby">  has_one :visit, through: :assessment</code>
3166
 
3166        </li>
3167
 
 
3168        <li class="covered" data-hits="1" data-linenumber="7">
 
3169          <span class="hits">1</span>
3170
 
 
3171          <code class="ruby">  has_one :survey, through: :visit</code>
3172
 
3172        </li>
3173
 
 
3174        <li class="covered" data-hits="1" data-linenumber="8">
 
3175          <span class="hits">1</span>
3176
 
 
3177          <code class="ruby">  has_one :user, through: :visit</code>
3178
 
3178        </li>
3179
 
 
3180        <li class="never" data-hits="" data-linenumber="9">
 
 
 
3183          <code class="ruby"></code>
3184
 
3184        </li>
3185
 
 
3186        <li class="covered" data-hits="1" data-linenumber="10">
 
3187          <span class="hits">1</span>
3188
 
 
3189          <code class="ruby">  validates :name, presence: true</code>
3190
 
3190        </li>
3191
 
 
3192        <li class="covered" data-hits="1" data-linenumber="11">
 
3193          <span class="hits">1</span>
3194
 
 
3195          <code class="ruby">  validates :assessment, presence: true</code>
3196
 
3196        </li>
3197
 
 
3198        <li class="covered" data-hits="1" data-linenumber="12">
 
3199          <span class="hits">1</span>
3200
 
 
3201          <code class="ruby">  validates_uniqueness_of :name, on: :create, message: &#39;must be unique&#39;, scope: :assessment</code>
 
3202        </li>
3203
 
 
3204        <li class="covered" data-hits="1" data-linenumber="13">
 
3205          <span class="hits">1</span>
3206
 
 
3207          <code class="ruby">  validates_numericality_of :score, message: &#39;is not a number&#39;</code>
 
3208        </li>
3209
 
 
3210        <li class="never" data-hits="" data-linenumber="14">
 
 
 
3213          <code class="ruby"></code>
3214
 
3214        </li>
3215
 
 
3216        <li class="covered" data-hits="1" data-linenumber="15">
 
3217          <span class="hits">1</span>
3218
 
 
3219          <code class="ruby">  def to_s</code>
3220
 
3220        </li>
3221
 
 
3222        <li class="covered" data-hits="1" data-linenumber="16">
 
3223          <span class="hits">1</span>
3224
 
 
3225          <code class="ruby">    &quot;#{assessment} #{name}: #{score}&quot;</code>
 
3226        </li>
3227
 
 
3228        <li class="never" data-hits="" data-linenumber="17">
 
 
 
3231          <code class="ruby">  end</code>
3232
 
3232        </li>
3233
 
 
3234        <li class="never" data-hits="" data-linenumber="18">
 
 
 
3237          <code class="ruby">end</code>
3238
 
3238        </li>
3239
 
 
3240    </ol>
3241
 
3241  </pre>
3242
 
3242</div>
3243
 
 
 
3245        <div class="source_table" id="625f753d77a7f89ba8c82881c0f51b83fc0f5a82">
 
3246  <div class="header">
 
3247    <h3>models/study.rb</h3>
3248
 
3248    <h4><span class="green">100.0 %</span> covered</h4>
 
3249    <div>
 
3250      <b>7</b> relevant lines. 
3251
 
3251      <span class="green"><b>7</b> lines covered</span> and
 
3252      <span class="red"><b>0</b> lines missed.</span>
 
3253    </div>
3254
 
3254  </div>
3255
 
 
3256  <pre>
 
3257    <ol>
 
 
3259        <li class="never" data-hits="" data-linenumber="1">
 
 
 
3262          <code class="ruby"># frozen_string_literal: true</code>
 
3263        </li>
3264
 
 
3265        <li class="never" data-hits="" data-linenumber="2">
 
 
 
3268          <code class="ruby"></code>
3269
 
3269        </li>
3270
 
 
3271        <li class="never" data-hits="" data-linenumber="3">
 
 
 
3274          <code class="ruby"># Model to represent studies</code>
 
3275        </li>
3276
 
 
3277        <li class="covered" data-hits="1" data-linenumber="4">
 
3278          <span class="hits">1</span>
3279
 
 
3280          <code class="ruby">class Study &lt; ApplicationRecord</code>
3281
 
3281        </li>
3282
 
 
3283        <li class="covered" data-hits="1" data-linenumber="5">
 
3284          <span class="hits">1</span>
3285
 
 
3286          <code class="ruby">  has_one :schedule, inverse_of: :study, dependent: :destroy</code>
3287
 
3287        </li>
3288
 
 
3289        <li class="covered" data-hits="1" data-linenumber="6">
 
3290          <span class="hits">1</span>
3291
 
 
3292          <code class="ruby">  validates :name, presence: true</code>
3293
 
3293        </li>
3294
 
 
3295        <li class="covered" data-hits="1" data-linenumber="7">
 
3296          <span class="hits">1</span>
3297
 
 
3298          <code class="ruby">  validates_uniqueness_of :name</code>
3299
 
3299        </li>
3300
 
 
3301        <li class="covered" data-hits="1" data-linenumber="8">
 
3302          <span class="hits">1</span>
3303
 
 
3304          <code class="ruby">  validates_length_of :name, \</code>
3305
 
3305        </li>
3306
 
 
3307        <li class="never" data-hits="" data-linenumber="9">
 
 
 
3310          <code class="ruby">                      within: 2..50, \</code>
3311
 
3311        </li>
3312
 
 
3313        <li class="never" data-hits="" data-linenumber="10">
 
 
 
3316          <code class="ruby">                      too_long: &#39;pick a shorter name&#39;, \</code>
 
3317        </li>
3318
 
 
3319        <li class="never" data-hits="" data-linenumber="11">
 
 
 
3322          <code class="ruby">                      too_short: &#39;pick a longer name&#39;</code>
 
3323        </li>
3324
 
 
3325        <li class="never" data-hits="" data-linenumber="12">
 
 
 
3328          <code class="ruby">  </code>
3329
 
3329        </li>
3330
 
 
3331        <li class="covered" data-hits="1" data-linenumber="13">
 
3332          <span class="hits">1</span>
3333
 
 
3334          <code class="ruby">  def to_s</code>
3335
 
3335        </li>
3336
 
 
3337        <li class="covered" data-hits="11" data-linenumber="14">
 
3338          <span class="hits">11</span>
3339
 
 
3340          <code class="ruby">    name</code>
3341
 
3341        </li>
3342
 
 
3343        <li class="never" data-hits="" data-linenumber="15">
 
 
 
3346          <code class="ruby">  end</code>
3347
 
3347        </li>
3348
 
 
3349        <li class="never" data-hits="" data-linenumber="16">
 
 
 
3352          <code class="ruby">end</code>
3353
 
3353        </li>
3354
 
 
3355    </ol>
3356
 
3356  </pre>
3357
 
3357</div>
3358
 
 
 
3360        <div class="source_table" id="84686a0e912ff69b30fb305ba3b5d7ed7cebcd05">
 
3361  <div class="header">
 
3362    <h3>models/study_event.rb</h3>
3363
 
3363    <h4><span class="green">100.0 %</span> covered</h4>
 
3364    <div>
 
3365      <b>13</b> relevant lines. 
3366
 
3366      <span class="green"><b>13</b> lines covered</span> and
 
3367      <span class="red"><b>0</b> lines missed.</span>
 
3368    </div>
3369
 
3369  </div>
3370
 
 
3371  <pre>
 
3372    <ol>
 
 
3374        <li class="never" data-hits="" data-linenumber="1">
 
 
 
3377          <code class="ruby"># frozen_string_literal: true</code>
 
3378        </li>
3379
 
 
3380        <li class="never" data-hits="" data-linenumber="2">
 
 
 
3383          <code class="ruby"></code>
3384
 
3384        </li>
3385
 
 
3386        <li class="never" data-hits="" data-linenumber="3">
 
 
 
3389          <code class="ruby"># Model to represent study events</code>
 
3390        </li>
3391
 
 
3392        <li class="covered" data-hits="1" data-linenumber="4">
 
3393          <span class="hits">1</span>
3394
 
 
3395          <code class="ruby">class StudyEvent &lt; ApplicationRecord</code>
3396
 
3396        </li>
3397
 
 
3398        <li class="covered" data-hits="1" data-linenumber="5">
 
3399          <span class="hits">1</span>
3400
 
 
3401          <code class="ruby">  belongs_to :arm, inverse_of: :study_events </code>
3402
 
3402        </li>
3403
 
 
3404        <li class="covered" data-hits="1" data-linenumber="6">
 
3405          <span class="hits">1</span>
3406
 
 
3407          <code class="ruby">  delegate :schedule, to: :arm, allow_nil: true</code>
3408
 
3408        </li>
3409
 
 
3410        <li class="covered" data-hits="1" data-linenumber="7">
 
3411          <span class="hits">1</span>
3412
 
 
3413          <code class="ruby">  delegate :study, to: :schedule, allow_nil: true</code>
3414
 
3414        </li>
3415
 
 
3416        <li class="covered" data-hits="1" data-linenumber="8">
 
3417          <span class="hits">1</span>
3418
 
 
3419          <code class="ruby">  has_many :study_event_instruments</code>
3420
 
3420        </li>
3421
 
 
3422        <li class="covered" data-hits="1" data-linenumber="9">
 
3423          <span class="hits">1</span>
3424
 
 
3425          <code class="ruby">  has_many :instruments, through: :study_event_instruments</code>
3426
 
3426        </li>
3427
 
 
3428        <li class="never" data-hits="" data-linenumber="10">
 
 
 
3431          <code class="ruby">    </code>
3432
 
3432        </li>
3433
 
 
3434        <li class="covered" data-hits="1" data-linenumber="11">
 
3435          <span class="hits">1</span>
3436
 
 
3437          <code class="ruby">  validates :name, presence: true</code>
3438
 
3438        </li>
3439
 
 
3440        <li class="covered" data-hits="1" data-linenumber="12">
 
3441          <span class="hits">1</span>
3442
 
 
3443          <code class="ruby">  validates :arm, presence: true</code>
3444
 
3444        </li>
3445
 
 
3446        <li class="covered" data-hits="1" data-linenumber="13">
 
3447          <span class="hits">1</span>
3448
 
 
3449          <code class="ruby">  validates :name, presence: true</code>
3450
 
3450        </li>
3451
 
 
3452        <li class="covered" data-hits="1" data-linenumber="14">
 
3453          <span class="hits">1</span>
3454
 
 
3455          <code class="ruby">  validates_uniqueness_of :name</code>
3456
 
3456        </li>
3457
 
 
3458        <li class="covered" data-hits="1" data-linenumber="15">
 
3459          <span class="hits">1</span>
3460
 
 
3461          <code class="ruby">  validates_length_of :name, \</code>
3462
 
3462        </li>
3463
 
 
3464        <li class="never" data-hits="" data-linenumber="16">
 
 
 
3467          <code class="ruby">                      within: 2..50, \</code>
3468
 
3468        </li>
3469
 
 
3470        <li class="never" data-hits="" data-linenumber="17">
 
 
 
3473          <code class="ruby">                      too_long: &#39;pick a shorter name&#39;, \</code>
 
3474        </li>
3475
 
 
3476        <li class="never" data-hits="" data-linenumber="18">
 
 
 
3479          <code class="ruby">                      too_short: &#39;pick a longer name&#39;</code>
 
3480        </li>
3481
 
 
3482        <li class="never" data-hits="" data-linenumber="19">
 
 
 
3485          <code class="ruby"></code>
3486
 
3486        </li>
3487
 
 
3488        <li class="never" data-hits="" data-linenumber="20">
 
 
 
3491          <code class="ruby"> </code>
3492
 
3492        </li>
3493
 
 
3494        <li class="covered" data-hits="1" data-linenumber="21">
 
3495          <span class="hits">1</span>
3496
 
 
3497          <code class="ruby">  def to_s</code>
3498
 
3498        </li>
3499
 
 
3500        <li class="covered" data-hits="3" data-linenumber="22">
 
3501          <span class="hits">3</span>
3502
 
 
3503          <code class="ruby">    &quot;#{study} #{arm} #{name}&quot;</code>
 
3504        </li>
3505
 
 
3506        <li class="never" data-hits="" data-linenumber="23">
 
 
 
3509          <code class="ruby">  end</code>
3510
 
3510        </li>
3511
 
 
3512        <li class="never" data-hits="" data-linenumber="24">
 
 
 
3515          <code class="ruby">end</code>
3516
 
3516        </li>
3517
 
 
3518    </ol>
3519
 
3519  </pre>
3520
 
3520</div>
3521
 
 
 
3523        <div class="source_table" id="1ba95d97bcc5e1ad5e3ada6ac9c1b94b24743ade">
 
3524  <div class="header">
 
3525    <h3>models/study_event_instrument.rb</h3>
3526
 
3526    <h4><span class="green">100.0 %</span> covered</h4>
 
3527    <div>
 
3528      <b>7</b> relevant lines. 
3529
 
3529      <span class="green"><b>7</b> lines covered</span> and
 
3530      <span class="red"><b>0</b> lines missed.</span>
 
3531    </div>
3532
 
3532  </div>
3533
 
 
3534  <pre>
 
3535    <ol>
 
 
3537        <li class="never" data-hits="" data-linenumber="1">
 
 
 
3540          <code class="ruby"># frozen_string_literal: true</code>
 
3541        </li>
3542
 
 
3543        <li class="never" data-hits="" data-linenumber="2">
 
 
 
3546          <code class="ruby"></code>
3547
 
3547        </li>
3548
 
 
3549        <li class="never" data-hits="" data-linenumber="3">
 
 
 
3552          <code class="ruby"># == Schema Information</code>
 
3553        </li>
3554
 
 
3555        <li class="never" data-hits="" data-linenumber="4">
 
 
 
3558          <code class="ruby"></code>
3559
 
3559        </li>
3560
 
 
3561        <li class="never" data-hits="" data-linenumber="5">
 
 
 
3564          <code class="ruby"># Table name: study_event_instruments</code>
 
3565        </li>
3566
 
 
3567        <li class="never" data-hits="" data-linenumber="6">
 
 
 
3570          <code class="ruby">#</code>
 
3571        </li>
3572
 
 
3573        <li class="never" data-hits="" data-linenumber="7">
 
 
 
3576          <code class="ruby">#  id            :integer          not null, primary key</code>
 
3577        </li>
3578
 
 
3579        <li class="never" data-hits="" data-linenumber="8">
 
 
 
3582          <code class="ruby">#  study_event_id :integer          not null</code>
 
3583        </li>
3584
 
 
3585        <li class="never" data-hits="" data-linenumber="9">
 
 
 
3588          <code class="ruby">#  instrument_id :integer          not null</code>
 
3589        </li>
3590
 
 
3591        <li class="never" data-hits="" data-linenumber="10">
 
 
 
3594          <code class="ruby"></code>
3595
 
3595        </li>
3596
 
 
3597        <li class="never" data-hits="" data-linenumber="11">
 
 
 
3600          <code class="ruby"># Association class between study events and instruments</code>
 
3601        </li>
3602
 
 
3603        <li class="covered" data-hits="1" data-linenumber="12">
 
3604          <span class="hits">1</span>
3605
 
 
3606          <code class="ruby">class StudyEventInstrument &lt; ApplicationRecord</code>
3607
 
3607        </li>
3608
 
 
3609        <li class="never" data-hits="" data-linenumber="13">
 
 
 
3612          <code class="ruby">  # has_paper_trail</code>
 
3613        </li>
3614
 
 
3615        <li class="never" data-hits="" data-linenumber="14">
 
 
 
3618          <code class="ruby"></code>
3619
 
3619        </li>
3620
 
 
3621        <li class="covered" data-hits="1" data-linenumber="15">
 
3622          <span class="hits">1</span>
3623
 
 
3624          <code class="ruby">  belongs_to :study_event, inverse_of: :study_event_instruments</code>
3625
 
3625        </li>
3626
 
 
3627        <li class="covered" data-hits="1" data-linenumber="16">
 
3628          <span class="hits">1</span>
3629
 
 
3630          <code class="ruby">  belongs_to :instrument, inverse_of: :study_event_instruments</code>
3631
 
3631        </li>
3632
 
 
3633        <li class="never" data-hits="" data-linenumber="17">
 
 
 
3636          <code class="ruby"></code>
3637
 
3637        </li>
3638
 
 
3639        <li class="covered" data-hits="1" data-linenumber="18">
 
3640          <span class="hits">1</span>
3641
 
 
3642          <code class="ruby">  validates :study_event, presence: true</code>
3643
 
3643        </li>
3644
 
 
3645        <li class="covered" data-hits="1" data-linenumber="19">
 
3646          <span class="hits">1</span>
3647
 
 
3648          <code class="ruby">  validates :instrument, presence: true</code>
3649
 
3649        </li>
3650
 
 
3651        <li class="never" data-hits="" data-linenumber="20">
 
 
 
3654          <code class="ruby"></code>
3655
 
3655        </li>
3656
 
 
3657        <li class="covered" data-hits="1" data-linenumber="21">
 
3658          <span class="hits">1</span>
3659
 
 
3660          <code class="ruby">  def to_s</code>
3661
 
3661        </li>
3662
 
 
3663        <li class="covered" data-hits="1" data-linenumber="22">
 
3664          <span class="hits">1</span>
3665
 
 
3666          <code class="ruby">    &quot;#{study_event} #{instrument}&quot;</code>
 
3667        </li>
3668
 
 
3669        <li class="never" data-hits="" data-linenumber="23">
 
 
 
3672          <code class="ruby">  end</code>
3673
 
3673        </li>
3674
 
 
3675        <li class="never" data-hits="" data-linenumber="24">
 
 
 
3678          <code class="ruby">end</code>
3679
 
3679        </li>
3680
 
 
3681    </ol>
3682
 
3682  </pre>
3683
 
3683</div>
3684
 
 
 
3686        <div class="source_table" id="f5fdaa64256e6a648996900f980487dc04adf72f">
 
3687  <div class="header">
 
3688    <h3>models/survey.rb</h3>
3689
 
3689    <h4><span class="green">100.0 %</span> covered</h4>
 
3690    <div>
 
3691      <b>15</b> relevant lines. 
3692
 
3692      <span class="green"><b>15</b> lines covered</span> and
 
3693      <span class="red"><b>0</b> lines missed.</span>
 
3694    </div>
3695
 
3695  </div>
3696
 
 
3697  <pre>
 
3698    <ol>
 
 
3700        <li class="never" data-hits="" data-linenumber="1">
 
 
 
3703          <code class="ruby"># frozen_string_literal: true</code>
 
3704        </li>
3705
 
 
3706        <li class="never" data-hits="" data-linenumber="2">
 
 
 
3709          <code class="ruby"></code>
3710
 
3710        </li>
3711
 
 
3712        <li class="never" data-hits="" data-linenumber="3">
 
 
 
3715          <code class="ruby"># == Schema Information</code>
 
3716        </li>
3717
 
 
3718        <li class="never" data-hits="" data-linenumber="4">
 
 
 
3721          <code class="ruby">#</code>
 
3722        </li>
3723
 
 
3724        <li class="never" data-hits="" data-linenumber="5">
 
 
 
3727          <code class="ruby"># Table name: surveys</code>
 
3728        </li>
3729
 
 
3730        <li class="never" data-hits="" data-linenumber="6">
 
 
 
3733          <code class="ruby">#</code>
 
3734        </li>
3735
 
 
3736        <li class="never" data-hits="" data-linenumber="7">
 
 
 
3739          <code class="ruby">#  id           :integer          not null, primary key</code>
 
3740        </li>
3741
 
 
3742        <li class="never" data-hits="" data-linenumber="8">
 
 
 
3745          <code class="ruby">#  name         :string           not null</code>
 
3746        </li>
3747
 
 
3748        <li class="never" data-hits="" data-linenumber="9">
 
 
 
3751          <code class="ruby">#  is_active    :boolean          default(TRUE), not null</code>
 
3752        </li>
3753
 
 
3754        <li class="never" data-hits="" data-linenumber="10">
 
 
 
3757          <code class="ruby">#  max_attempts :integer          default(0), not null</code>
 
3758        </li>
3759
 
 
3760        <li class="never" data-hits="" data-linenumber="11">
 
 
 
3763          <code class="ruby">#  created_at   :datetime         default(2018-02-23 00:00:00 UTC), not null</code>
 
3764        </li>
3765
 
 
3766        <li class="never" data-hits="" data-linenumber="12">
 
 
 
3769          <code class="ruby">#  updated_at   :datetime         default(2018-02-23 00:00:00 UTC), not null</code>
 
3770        </li>
3771
 
 
3772        <li class="never" data-hits="" data-linenumber="13">
 
 
 
3775          <code class="ruby"></code>
3776
 
3776        </li>
3777
 
 
3778        <li class="never" data-hits="" data-linenumber="14">
 
 
 
3781          <code class="ruby"># Model to represent a survey/campaign</code>
 
3782        </li>
3783
 
 
3784        <li class="covered" data-hits="1" data-linenumber="15">
 
3785          <span class="hits">1</span>
3786
 
 
3787          <code class="ruby">class Survey &lt; ApplicationRecord</code>
3788
 
3788        </li>
3789
 
 
3790        <li class="never" data-hits="" data-linenumber="16">
 
 
 
3793          <code class="ruby">  # has_paper_trail</code>
 
3794        </li>
3795
 
 
3796        <li class="never" data-hits="" data-linenumber="17">
 
 
 
3799          <code class="ruby"></code>
3800
 
3800        </li>
3801
 
 
3802        <li class="covered" data-hits="1" data-linenumber="18">
 
3803          <span class="hits">1</span>
3804
 
 
3805          <code class="ruby">  has_many :user_surveys, inverse_of: :survey, dependent: :destroy</code>
3806
 
3806        </li>
3807
 
 
3808        <li class="covered" data-hits="1" data-linenumber="19">
 
3809          <span class="hits">1</span>
3810
 
 
3811          <code class="ruby">  has_many :visits, inverse_of: :survey, dependent: :destroy</code>
3812
 
3812        </li>
3813
 
 
3814        <li class="covered" data-hits="1" data-linenumber="20">
 
3815          <span class="hits">1</span>
3816
 
 
3817          <code class="ruby">  has_many :assessments, through: :visits</code>
3818
 
3818        </li>
3819
 
 
3820        <li class="covered" data-hits="1" data-linenumber="21">
 
3821          <span class="hits">1</span>
3822
 
 
3823          <code class="ruby">  has_many :users, through: :user_surveys</code>
3824
 
3824        </li>
3825
 
 
3826        <li class="never" data-hits="" data-linenumber="22">
 
 
 
3829          <code class="ruby">  </code>
3830
 
3830        </li>
3831
 
 
3832        <li class="covered" data-hits="2" data-linenumber="23">
 
3833          <span class="hits">2</span>
3834
 
 
3835          <code class="ruby">  scope :active, -&gt; { where(is_active: true) }</code>
3836
 
3836        </li>
3837
 
 
3838        <li class="never" data-hits="" data-linenumber="24">
 
 
 
3841          <code class="ruby"></code>
3842
 
3842        </li>
3843
 
 
3844        <li class="covered" data-hits="1" data-linenumber="25">
 
3845          <span class="hits">1</span>
3846
 
 
3847          <code class="ruby">  validates :name, presence: true</code>
3848
 
3848        </li>
3849
 
 
3850        <li class="covered" data-hits="1" data-linenumber="26">
 
3851          <span class="hits">1</span>
3852
 
 
3853          <code class="ruby">  validates_uniqueness_of :name</code>
3854
 
3854        </li>
3855
 
 
3856        <li class="covered" data-hits="1" data-linenumber="27">
 
3857          <span class="hits">1</span>
3858
 
 
3859          <code class="ruby">  validates_length_of :name, \</code>
3860
 
3860        </li>
3861
 
 
3862        <li class="never" data-hits="" data-linenumber="28">
 
 
 
3865          <code class="ruby">                      within: 2..50, \</code>
3866
 
3866        </li>
3867
 
 
3868        <li class="never" data-hits="" data-linenumber="29">
 
 
 
3871          <code class="ruby">                      too_long: &#39;pick a shorter name&#39;, \</code>
 
3872        </li>
3873
 
 
3874        <li class="never" data-hits="" data-linenumber="30">
 
 
 
3877          <code class="ruby">                      too_short: &#39;pick a longer name&#39;</code>
 
3878        </li>
3879
 
 
3880        <li class="never" data-hits="" data-linenumber="31">
 
 
 
3883          <code class="ruby">  </code>
3884
 
3884        </li>
3885
 
 
3886        <li class="covered" data-hits="1" data-linenumber="32">
 
3887          <span class="hits">1</span>
3888
 
 
3889          <code class="ruby">  def self.list_active_tests</code>
3890
 
3890        </li>
3891
 
 
3892        <li class="covered" data-hits="1" data-linenumber="33">
 
3893          <span class="hits">1</span>
3894
 
 
3895          <code class="ruby">    Survey.active.join(&#39; &#39;)</code>
 
3896        </li>
3897
 
 
3898        <li class="never" data-hits="" data-linenumber="34">
 
 
 
3901          <code class="ruby">  end                 </code>
3902
 
3902        </li>
3903
 
 
3904        <li class="never" data-hits="" data-linenumber="35">
 
 
 
3907          <code class="ruby"></code>
3908
 
3908        </li>
3909
 
 
3910        <li class="covered" data-hits="1" data-linenumber="36">
 
3911          <span class="hits">1</span>
3912
 
 
3913          <code class="ruby">  def self.list_tests</code>
3914
 
3914        </li>
3915
 
 
3916        <li class="covered" data-hits="1" data-linenumber="37">
 
3917          <span class="hits">1</span>
3918
 
 
3919          <code class="ruby">    Survey.all.join(&#39; &#39;)</code>
 
3920        </li>
3921
 
 
3922        <li class="never" data-hits="" data-linenumber="38">
 
 
 
3925          <code class="ruby">  end</code>
3926
 
3926        </li>
3927
 
 
3928        <li class="never" data-hits="" data-linenumber="39">
 
 
 
3931          <code class="ruby"></code>
3932
 
3932        </li>
3933
 
 
3934        <li class="covered" data-hits="1" data-linenumber="40">
 
3935          <span class="hits">1</span>
3936
 
 
3937          <code class="ruby">  def to_s</code>
3938
 
3938        </li>
3939
 
 
3940        <li class="covered" data-hits="20" data-linenumber="41">
 
3941          <span class="hits">20</span>
3942
 
 
3943          <code class="ruby">    name</code>
3944
 
3944        </li>
3945
 
 
3946        <li class="never" data-hits="" data-linenumber="42">
 
 
 
3949          <code class="ruby">  end</code>
3950
 
3950        </li>
3951
 
 
3952        <li class="never" data-hits="" data-linenumber="43">
 
 
 
3955          <code class="ruby">end</code>
3956
 
3956        </li>
3957
 
 
3958    </ol>
3959
 
3959  </pre>
3960
 
3960</div>
3961
 
 
 
3963        <div class="source_table" id="c2997a8e32220eb245d733e0477894e0487da5a8">
 
3964  <div class="header">
 
3965    <h3>models/user.rb</h3>
3966
 
3966    <h4><span class="green">100.0 %</span> covered</h4>
 
3967    <div>
 
3968      <b>12</b> relevant lines. 
3969
 
3969      <span class="green"><b>12</b> lines covered</span> and
 
3970      <span class="red"><b>0</b> lines missed.</span>
 
3971    </div>
3972
 
3972  </div>
3973
 
 
3974  <pre>
 
3975    <ol>
 
 
3977        <li class="never" data-hits="" data-linenumber="1">
 
 
 
3980          <code class="ruby"># frozen_string_literal: true</code>
 
3981        </li>
3982
 
 
3983        <li class="never" data-hits="" data-linenumber="2">
 
 
 
3986          <code class="ruby"></code>
3987
 
3987        </li>
3988
 
 
3989        <li class="never" data-hits="" data-linenumber="3">
 
 
 
3992          <code class="ruby"># == Schema Information</code>
 
3993        </li>
3994
 
 
3995        <li class="never" data-hits="" data-linenumber="4">
 
 
 
3998          <code class="ruby">#</code>
 
3999        </li>
4000
 
 
4001        <li class="never" data-hits="" data-linenumber="5">
 
 
 
4004          <code class="ruby"># Table name: users</code>
 
4005        </li>
4006
 
 
4007        <li class="never" data-hits="" data-linenumber="6">
 
 
 
4010          <code class="ruby">#</code>
 
4011        </li>
4012
 
 
4013        <li class="never" data-hits="" data-linenumber="7">
 
 
 
4016          <code class="ruby">#  id           :integer          not null, primary key</code>
 
4017        </li>
4018
 
 
4019        <li class="never" data-hits="" data-linenumber="8">
 
 
 
4022          <code class="ruby">#  username     :string           not null</code>
 
4023        </li>
4024
 
 
4025        <li class="never" data-hits="" data-linenumber="9">
 
 
 
4028          <code class="ruby">#  firstname    :string</code>
 
4029        </li>
4030
 
 
4031        <li class="never" data-hits="" data-linenumber="10">
 
 
 
4034          <code class="ruby">#  lastname     :string</code>
 
4035        </li>
4036
 
 
4037        <li class="never" data-hits="" data-linenumber="11">
 
 
 
4040          <code class="ruby">#  access_token :text             default(&quot;&quot;), not null</code>
 
4041        </li>
4042
 
 
4043        <li class="never" data-hits="" data-linenumber="12">
 
 
 
4046          <code class="ruby">#  preferences  :jsonb            not null</code>
 
4047        </li>
4048
 
 
4049        <li class="never" data-hits="" data-linenumber="13">
 
 
 
4052          <code class="ruby">#  created_at   :datetime         default(2018-02-23 00:00:00 UTC), not null</code>
 
4053        </li>
4054
 
 
4055        <li class="never" data-hits="" data-linenumber="14">
 
 
 
4058          <code class="ruby">#  updated_at   :datetime         default(2018-02-23 00:00:00 UTC), not null</code>
 
4059        </li>
4060
 
 
4061        <li class="never" data-hits="" data-linenumber="15">
 
 
 
4064          <code class="ruby">#</code>
 
4065        </li>
4066
 
 
4067        <li class="never" data-hits="" data-linenumber="16">
 
 
 
4070          <code class="ruby"></code>
4071
 
4071        </li>
4072
 
 
4073        <li class="never" data-hits="" data-linenumber="17">
 
 
 
4076          <code class="ruby"># Represents an application user/respondent</code>
 
4077        </li>
4078
 
 
4079        <li class="never" data-hits="" data-linenumber="18">
 
 
 
4082          <code class="ruby"># Users are linked to Alexa users using Alexa session request.user_id</code>
 
4083        </li>
4084
 
 
4085        <li class="covered" data-hits="1" data-linenumber="19">
 
4086          <span class="hits">1</span>
4087
 
 
4088          <code class="ruby">class User &lt; ApplicationRecord</code>
4089
 
4089        </li>
4090
 
 
4091        <li class="never" data-hits="" data-linenumber="20">
 
 
 
4094          <code class="ruby">  # has_paper_trail</code>
 
4095        </li>
4096
 
 
4097        <li class="never" data-hits="" data-linenumber="21">
 
 
 
4100          <code class="ruby"></code>
4101
 
4101        </li>
4102
 
 
4103        <li class="covered" data-hits="1" data-linenumber="22">
 
4104          <span class="hits">1</span>
4105
 
 
4106          <code class="ruby">  has_many :surveys, through: :user_surveys</code>
4107
 
4107        </li>
4108
 
 
4109        <li class="covered" data-hits="1" data-linenumber="23">
 
4110          <span class="hits">1</span>
4111
 
 
4112          <code class="ruby">  has_many :user_surveys, inverse_of: :user, dependent: :destroy</code>
4113
 
4113        </li>
4114
 
 
4115        <li class="covered" data-hits="1" data-linenumber="24">
 
4116          <span class="hits">1</span>
4117
 
 
4118          <code class="ruby">  has_many :visits, inverse_of: :user, dependent: :destroy</code>
4119
 
4119        </li>
4120
 
 
4121        <li class="covered" data-hits="1" data-linenumber="25">
 
4122          <span class="hits">1</span>
4123
 
 
4124          <code class="ruby">  has_many :assessments, through: :visits</code>
4125
 
4125        </li>
4126
 
 
4127        <li class="never" data-hits="" data-linenumber="26">
 
 
 
4130          <code class="ruby"> </code>
4131
 
4131        </li>
4132
 
 
4133        <li class="covered" data-hits="1" data-linenumber="27">
 
4134          <span class="hits">1</span>
4135
 
 
4136          <code class="ruby">  validates :username, presence: true</code>
4137
 
4137        </li>
4138
 
 
4139        <li class="covered" data-hits="1" data-linenumber="28">
 
4140          <span class="hits">1</span>
4141
 
 
4142          <code class="ruby">  validates_uniqueness_of :username</code>
4143
 
4143        </li>
4144
 
 
4145        <li class="covered" data-hits="1" data-linenumber="29">
 
4146          <span class="hits">1</span>
4147
 
 
4148          <code class="ruby">  validates_length_of :username, \</code>
4149
 
4149        </li>
4150
 
 
4151        <li class="never" data-hits="" data-linenumber="30">
 
 
 
4154          <code class="ruby">                      within: 5..20, \</code>
4155
 
4155        </li>
4156
 
 
4157        <li class="never" data-hits="" data-linenumber="31">
 
 
 
4160          <code class="ruby">                      too_long: &#39;pick a shorter name&#39;, \</code>
 
4161        </li>
4162
 
 
4163        <li class="never" data-hits="" data-linenumber="32">
 
 
 
4166          <code class="ruby">                      too_short: &#39;pick a longer name&#39;</code>
 
4167        </li>
4168
 
 
4169        <li class="never" data-hits="" data-linenumber="33">
 
 
 
4172          <code class="ruby">   </code>
4173
 
4173        </li>
4174
 
 
4175        <li class="covered" data-hits="1" data-linenumber="34">
 
4176          <span class="hits">1</span>
4177
 
 
4178          <code class="ruby">  def self.authenticate(user_id)</code>
4179
 
4179        </li>
4180
 
 
4181        <li class="covered" data-hits="7" data-linenumber="35">
 
4182          <span class="hits">7</span>
4183
 
 
4184          <code class="ruby">    User.find_or_create_by(username: user_id)</code>
4185
 
4185        </li>
4186
 
 
4187        <li class="never" data-hits="" data-linenumber="36">
 
 
 
4190          <code class="ruby">  end</code>
4191
 
4191        </li>
4192
 
 
4193        <li class="never" data-hits="" data-linenumber="37">
 
 
 
4196          <code class="ruby"></code>
4197
 
4197        </li>
4198
 
 
4199        <li class="covered" data-hits="1" data-linenumber="38">
 
4200          <span class="hits">1</span>
4201
 
 
4202          <code class="ruby">  def to_s</code>
4203
 
4203        </li>
4204
 
 
4205        <li class="covered" data-hits="11" data-linenumber="39">
 
4206          <span class="hits">11</span>
4207
 
 
4208          <code class="ruby">    username</code>
4209
 
4209        </li>
4210
 
 
4211        <li class="never" data-hits="" data-linenumber="40">
 
 
 
4214          <code class="ruby">  end</code>
4215
 
4215        </li>
4216
 
 
4217        <li class="never" data-hits="" data-linenumber="41">
 
 
 
4220          <code class="ruby">end</code>
4221
 
4221        </li>
4222
 
 
4223    </ol>
4224
 
4224  </pre>
4225
 
4225</div>
4226
 
 
 
4228        <div class="source_table" id="c001cb3a9ab314cffb653bd540313ae3d27bde9b">
 
4229  <div class="header">
 
4230    <h3>models/user_survey.rb</h3>
4231
 
4231    <h4><span class="green">100.0 %</span> covered</h4>
 
4232    <div>
 
4233      <b>7</b> relevant lines. 
4234
 
4234      <span class="green"><b>7</b> lines covered</span> and
 
4235      <span class="red"><b>0</b> lines missed.</span>
 
4236    </div>
4237
 
4237  </div>
4238
 
 
4239  <pre>
 
4240    <ol>
 
 
4242        <li class="never" data-hits="" data-linenumber="1">
 
 
 
4245          <code class="ruby"># frozen_string_literal: true</code>
 
4246        </li>
4247
 
 
4248        <li class="never" data-hits="" data-linenumber="2">
 
 
 
4251          <code class="ruby"></code>
4252
 
4252        </li>
4253
 
 
4254        <li class="never" data-hits="" data-linenumber="3">
 
 
 
4257          <code class="ruby"># == Schema Information</code>
 
4258        </li>
4259
 
 
4260        <li class="never" data-hits="" data-linenumber="4">
 
 
 
4263          <code class="ruby">#</code>
 
4264        </li>
4265
 
 
4266        <li class="never" data-hits="" data-linenumber="5">
 
 
 
4269          <code class="ruby"># Table name: user_surveys</code>
 
4270        </li>
4271
 
 
4272        <li class="never" data-hits="" data-linenumber="6">
 
 
 
4275          <code class="ruby">#</code>
 
4276        </li>
4277
 
 
4278        <li class="never" data-hits="" data-linenumber="7">
 
 
 
4281          <code class="ruby">#  id        :integer          not null, primary key</code>
 
4282        </li>
4283
 
 
4284        <li class="never" data-hits="" data-linenumber="8">
 
 
 
4287          <code class="ruby">#  user_id   :integer          not null</code>
 
4288        </li>
4289
 
 
4290        <li class="never" data-hits="" data-linenumber="9">
 
 
 
4293          <code class="ruby">#  survey_id :integer          not null</code>
 
4294        </li>
4295
 
 
4296        <li class="never" data-hits="" data-linenumber="10">
 
 
 
4299          <code class="ruby">#</code>
 
4300        </li>
4301
 
 
4302        <li class="never" data-hits="" data-linenumber="11">
 
 
 
4305          <code class="ruby"></code>
4306
 
4306        </li>
4307
 
 
4308        <li class="never" data-hits="" data-linenumber="12">
 
 
 
4311          <code class="ruby"># Association class between users and surveys</code>
 
4312        </li>
4313
 
 
4314        <li class="covered" data-hits="1" data-linenumber="13">
 
4315          <span class="hits">1</span>
4316
 
 
4317          <code class="ruby">class UserSurvey &lt; ApplicationRecord</code>
4318
 
4318        </li>
4319
 
 
4320        <li class="never" data-hits="" data-linenumber="14">
 
 
 
4323          <code class="ruby">  # has_paper_trail</code>
 
4324        </li>
4325
 
 
4326        <li class="never" data-hits="" data-linenumber="15">
 
 
 
4329          <code class="ruby"></code>
4330
 
4330        </li>
4331
 
 
4332        <li class="covered" data-hits="1" data-linenumber="16">
 
4333          <span class="hits">1</span>
4334
 
 
4335          <code class="ruby">  belongs_to :user, inverse_of: :user_surveys</code>
4336
 
4336        </li>
4337
 
 
4338        <li class="covered" data-hits="1" data-linenumber="17">
 
4339          <span class="hits">1</span>
4340
 
 
4341          <code class="ruby">  belongs_to :survey, inverse_of: :user_surveys</code>
4342
 
4342        </li>
4343
 
 
4344        <li class="never" data-hits="" data-linenumber="18">
 
 
 
4347          <code class="ruby"></code>
4348
 
4348        </li>
4349
 
 
4350        <li class="covered" data-hits="1" data-linenumber="19">
 
4351          <span class="hits">1</span>
4352
 
 
4353          <code class="ruby">  validates :user, presence: true</code>
4354
 
4354        </li>
4355
 
 
4356        <li class="covered" data-hits="1" data-linenumber="20">
 
4357          <span class="hits">1</span>
4358
 
 
4359          <code class="ruby">  validates :survey, presence: true</code>
4360
 
4360        </li>
4361
 
 
4362        <li class="never" data-hits="" data-linenumber="21">
 
 
 
4365          <code class="ruby"></code>
4366
 
4366        </li>
4367
 
 
4368        <li class="covered" data-hits="1" data-linenumber="22">
 
4369          <span class="hits">1</span>
4370
 
 
4371          <code class="ruby">  def to_s</code>
4372
 
4372        </li>
4373
 
 
4374        <li class="covered" data-hits="1" data-linenumber="23">
 
4375          <span class="hits">1</span>
4376
 
 
4377          <code class="ruby">    &quot;#{user} #{survey}&quot;</code>
 
4378        </li>
4379
 
 
4380        <li class="never" data-hits="" data-linenumber="24">
 
 
 
4383          <code class="ruby">  end</code>
4384
 
4384        </li>
4385
 
 
4386        <li class="never" data-hits="" data-linenumber="25">
 
 
 
4389          <code class="ruby">end</code>
4390
 
4390        </li>
4391
 
 
4392    </ol>
4393
 
4393  </pre>
4394
 
4394</div>
4395
 
 
 
4397        <div class="source_table" id="a218fdd0bf0a41cd95b3323a3ec3b62d0acb5b56">
 
4398  <div class="header">
 
4399    <h3>models/visit.rb</h3>
4400
 
4400    <h4><span class="green">100.0 %</span> covered</h4>
 
4401    <div>
 
4402      <b>11</b> relevant lines. 
4403
 
4403      <span class="green"><b>11</b> lines covered</span> and
 
4404      <span class="red"><b>0</b> lines missed.</span>
 
4405    </div>
4406
 
4406  </div>
4407
 
 
4408  <pre>
 
4409    <ol>
 
 
4411        <li class="never" data-hits="" data-linenumber="1">
 
 
 
4414          <code class="ruby"># frozen_string_literal: true</code>
 
4415        </li>
4416
 
 
4417        <li class="never" data-hits="" data-linenumber="2">
 
 
 
4420          <code class="ruby"></code>
4421
 
4421        </li>
4422
 
 
4423        <li class="never" data-hits="" data-linenumber="3">
 
 
 
4426          <code class="ruby"># == Schema Information</code>
 
4427        </li>
4428
 
 
4429        <li class="never" data-hits="" data-linenumber="4">
 
 
 
4432          <code class="ruby">#</code>
 
4433        </li>
4434
 
 
4435        <li class="never" data-hits="" data-linenumber="5">
 
 
 
4438          <code class="ruby"># Table name: visits</code>
 
4439        </li>
4440
 
 
4441        <li class="never" data-hits="" data-linenumber="6">
 
 
 
4444          <code class="ruby">#</code>
 
4445        </li>
4446
 
 
4447        <li class="never" data-hits="" data-linenumber="7">
 
 
 
4450          <code class="ruby">#  id         :integer          not null, primary key</code>
 
4451        </li>
4452
 
 
4453        <li class="never" data-hits="" data-linenumber="8">
 
 
 
4456          <code class="ruby">#  survey_id         :integer   not null</code>
 
4457        </li>
4458
 
 
4459        <li class="never" data-hits="" data-linenumber="9">
 
 
 
4462          <code class="ruby">#  user_id    :integer          not null</code>
 
4463        </li>
4464
 
 
4465        <li class="never" data-hits="" data-linenumber="10">
 
 
 
4468          <code class="ruby">#  name       :string           default(&quot;2018-02-26 15:05:06.484447&quot;), not null</code>
 
4469        </li>
4470
 
 
4471        <li class="never" data-hits="" data-linenumber="11">
 
 
 
4474          <code class="ruby">#  visit_date :datetime         default(2018-02-26 15:05:06 UTC), not null</code>
 
4475        </li>
4476
 
 
4477        <li class="never" data-hits="" data-linenumber="12">
 
 
 
4480          <code class="ruby">#  created_at :datetime         default(2018-02-26 15:05:06 UTC), not null</code>
 
4481        </li>
4482
 
 
4483        <li class="never" data-hits="" data-linenumber="13">
 
 
 
4486          <code class="ruby">#  updated_at :datetime         default(2018-02-26 15:05:06 UTC), not null</code>
 
4487        </li>
4488
 
 
4489        <li class="never" data-hits="" data-linenumber="14">
 
 
 
4492          <code class="ruby">#</code>
 
4493        </li>
4494
 
 
4495        <li class="never" data-hits="" data-linenumber="15">
 
 
 
4498          <code class="ruby"></code>
4499
 
4499        </li>
4500
 
 
4501        <li class="never" data-hits="" data-linenumber="16">
 
 
 
4504          <code class="ruby"># Model to represent a user visit or an attempt in a self assessment</code>
 
4505        </li>
4506
 
 
4507        <li class="covered" data-hits="1" data-linenumber="17">
 
4508          <span class="hits">1</span>
4509
 
 
4510          <code class="ruby">class Visit &lt; ApplicationRecord</code>
4511
 
4511        </li>
4512
 
 
4513        <li class="never" data-hits="" data-linenumber="18">
 
 
 
4516          <code class="ruby">  </code>
4517
 
4517        </li>
4518
 
 
4519        <li class="covered" data-hits="1" data-linenumber="19">
 
4520          <span class="hits">1</span>
4521
 
 
4522          <code class="ruby">  belongs_to :user, inverse_of: :visits </code>
4523
 
4523        </li>
4524
 
 
4525        <li class="covered" data-hits="1" data-linenumber="20">
 
4526          <span class="hits">1</span>
4527
 
 
4528          <code class="ruby">  belongs_to :survey, inverse_of: :visits </code>
4529
 
4529        </li>
4530
 
 
4531        <li class="covered" data-hits="1" data-linenumber="21">
 
4532          <span class="hits">1</span>
4533
 
 
4534          <code class="ruby">  has_many :assessments, dependent: :destroy</code>
4535
 
4535        </li>
4536
 
 
4537        <li class="never" data-hits="" data-linenumber="22">
 
 
 
4540          <code class="ruby">  </code>
4541
 
4541        </li>
4542
 
 
4543        <li class="covered" data-hits="1" data-linenumber="23">
 
4544          <span class="hits">1</span>
4545
 
 
4546          <code class="ruby">  validates :user, presence: true</code>
4547
 
4547        </li>
4548
 
 
4549        <li class="covered" data-hits="1" data-linenumber="24">
 
4550          <span class="hits">1</span>
4551
 
 
4552          <code class="ruby">  validates :survey, presence: true</code>
4553
 
4553        </li>
4554
 
 
4555        <li class="covered" data-hits="1" data-linenumber="25">
 
4556          <span class="hits">1</span>
4557
 
 
4558          <code class="ruby">  validates_uniqueness_of :number, scope: %i[survey user] </code>
4559
 
4559        </li>
4560
 
 
4561        <li class="covered" data-hits="1" data-linenumber="26">
 
4562          <span class="hits">1</span>
4563
 
 
4564          <code class="ruby">  validates :number, presence: true, allow_blank: false</code>
4565
 
4565        </li>
4566
 
 
4567        <li class="covered" data-hits="1" data-linenumber="27">
 
4568          <span class="hits">1</span>
4569
 
 
4570          <code class="ruby">  validates :number, numericality: { only_integer: true, greater_than_or_equal_to: 1, less_than_or_equal_to: 10_000 }</code>
4571
 
4571        </li>
4572
 
 
4573        <li class="never" data-hits="" data-linenumber="28">
 
 
 
4576          <code class="ruby"></code>
4577
 
4577        </li>
4578
 
 
4579        <li class="covered" data-hits="1" data-linenumber="29">
 
4580          <span class="hits">1</span>
4581
 
 
4582          <code class="ruby">  def to_s</code>
4583
 
4583        </li>
4584
 
 
4585        <li class="covered" data-hits="9" data-linenumber="30">
 
4586          <span class="hits">9</span>
4587
 
 
4588          <code class="ruby">    &quot;#{user} #{survey} #{number}&quot;</code>
 
4589        </li>
4590
 
 
4591        <li class="never" data-hits="" data-linenumber="31">
 
 
 
4594          <code class="ruby">  end</code>
4595
 
4595        </li>
4596
 
 
4597        <li class="never" data-hits="" data-linenumber="32">
 
 
 
4600          <code class="ruby">end</code>
4601
 
4601        </li>
4602
 
 
4603    </ol>
4604
 
4604  </pre>
4605
 
4605</div>
4606
 
 
 
4608        <div class="source_table" id="8d3214723093df1c6322390ad5f7c6099fbd5434">
 
4609  <div class="header">
 
4610    <h3>spec/alexa_helper_spec.rb</h3>
4611
 
4611    <h4><span class="green">100.0 %</span> covered</h4>
 
4612    <div>
 
4613      <b>6</b> relevant lines. 
4614
 
4614      <span class="green"><b>6</b> lines covered</span> and
 
4615      <span class="red"><b>0</b> lines missed.</span>
 
4616    </div>
4617
 
4617  </div>
4618
 
 
4619  <pre>
 
4620    <ol>
 
 
4622        <li class="never" data-hits="" data-linenumber="1">
 
 
 
4625          <code class="ruby"># frozen_string_literal: true</code>
 
4626        </li>
4627
 
 
4628        <li class="never" data-hits="" data-linenumber="2">
 
 
 
4631          <code class="ruby"></code>
4632
 
4632        </li>
4633
 
 
4634        <li class="covered" data-hits="1" data-linenumber="3">
 
4635          <span class="hits">1</span>
4636
 
 
4637          <code class="ruby">require &#39;./models/init&#39;</code>
 
4638        </li>
4639
 
 
4640        <li class="never" data-hits="" data-linenumber="4">
 
 
 
4643          <code class="ruby"></code>
4644
 
4644        </li>
4645
 
 
4646        <li class="covered" data-hits="1" data-linenumber="5">
 
4647          <span class="hits">1</span>
4648
 
 
4649          <code class="ruby">RSpec.describe AlexaHelper do</code>
4650
 
4650        </li>
4651
 
 
4652        <li class="covered" data-hits="1" data-linenumber="6">
 
4653          <span class="hits">1</span>
4654
 
 
4655          <code class="ruby">  describe &#39;.default_help_response&#39; do</code>
 
4656        </li>
4657
 
 
4658        <li class="covered" data-hits="2" data-linenumber="7">
 
4659          <span class="hits">2</span>
4660
 
 
4661          <code class="ruby">    it { expect(AlexaHelper.default_help_response).to eq(AlexaHelper::DEFAULT_HELP_RESPONSE) }</code>
4662
 
4662        </li>
4663
 
 
4664        <li class="never" data-hits="" data-linenumber="8">
 
 
 
4667          <code class="ruby">  end</code>
4668
 
4668        </li>
4669
 
 
4670        <li class="covered" data-hits="1" data-linenumber="9">
 
4671          <span class="hits">1</span>
4672
 
 
4673          <code class="ruby">  describe &#39;.default_testname_slot&#39; do</code>
 
4674        </li>
4675
 
 
4676        <li class="covered" data-hits="2" data-linenumber="10">
 
4677          <span class="hits">2</span>
4678
 
 
4679          <code class="ruby">    it { expect(AlexaHelper::DEFAULT_TESTNAME_SLOT).to eq(&#39;testname&#39;) }</code>
 
4680        </li>
4681
 
 
4682        <li class="never" data-hits="" data-linenumber="11">
 
 
 
4685          <code class="ruby">  end</code>
4686
 
4686        </li>
4687
 
 
4688        <li class="never" data-hits="" data-linenumber="12">
 
 
 
4691          <code class="ruby">end</code>
4692
 
4692        </li>
4693
 
 
4694    </ol>
4695
 
4695  </pre>
4696
 
4696</div>
4697
 
 
 
4699        <div class="source_table" id="b4cf109f871498502198a62924e17048eabf4d6e">
 
4700  <div class="header">
 
4701    <h3>spec/arm_spec.rb</h3>
4702
 
4702    <h4><span class="green">100.0 %</span> covered</h4>
 
4703    <div>
 
4704      <b>20</b> relevant lines. 
4705
 
4705      <span class="green"><b>20</b> lines covered</span> and
 
4706      <span class="red"><b>0</b> lines missed.</span>
 
4707    </div>
4708
 
4708  </div>
4709
 
 
4710  <pre>
 
4711    <ol>
 
 
4713        <li class="never" data-hits="" data-linenumber="1">
 
 
 
4716          <code class="ruby"># frozen_string_literal: true</code>
 
4717        </li>
4718
 
 
4719        <li class="never" data-hits="" data-linenumber="2">
 
 
 
4722          <code class="ruby"></code>
4723
 
4723        </li>
4724
 
 
4725        <li class="covered" data-hits="1" data-linenumber="3">
 
4726          <span class="hits">1</span>
4727
 
 
4728          <code class="ruby">RSpec.describe Arm, type: :model do</code>
4729
 
4729        </li>
4730
 
 
4731        <li class="covered" data-hits="3" data-linenumber="4">
 
4732          <span class="hits">3</span>
4733
 
 
4734          <code class="ruby">  subject { described_class.find_or_create_by! name: AppConstants::TEST_ARM, schedule: schedule, number: 1 }</code>
4735
 
4735        </li>
4736
 
 
4737        <li class="covered" data-hits="7" data-linenumber="5">
 
4738          <span class="hits">7</span>
4739
 
 
4740          <code class="ruby">  let!(:schedule) { Schedule.find_or_create_by! name: AppConstants::TEST_SCHEDULE, study: study }</code>
4741
 
4741        </li>
4742
 
 
4743        <li class="covered" data-hits="7" data-linenumber="6">
 
4744          <span class="hits">7</span>
4745
 
 
4746          <code class="ruby">  let!(:study) { TestFactory.test_study }</code>
4747
 
4747        </li>
4748
 
 
4749        <li class="never" data-hits="" data-linenumber="7">
 
 
 
4752          <code class="ruby"></code>
4753
 
4753        </li>
4754
 
 
4755        <li class="covered" data-hits="1" data-linenumber="8">
 
4756          <span class="hits">1</span>
4757
 
 
4758          <code class="ruby">  describe &#39;.create!&#39; do</code>
 
4759        </li>
4760
 
 
4761        <li class="covered" data-hits="1" data-linenumber="9">
 
4762          <span class="hits">1</span>
4763
 
 
4764          <code class="ruby">    context &#39;no name or schedule&#39; do</code>
 
4765        </li>
4766
 
 
4767        <li class="covered" data-hits="3" data-linenumber="10">
 
4768          <span class="hits">3</span>
4769
 
 
4770          <code class="ruby">      it { expect { described_class.create! }.to raise_error ActiveRecord::RecordInvalid }</code>
4771
 
4771        </li>
4772
 
 
4773        <li class="never" data-hits="" data-linenumber="11">
 
 
 
4776          <code class="ruby">    end</code>
4777
 
4777        </li>
4778
 
 
4779        <li class="never" data-hits="" data-linenumber="12">
 
 
 
4782          <code class="ruby"></code>
4783
 
4783        </li>
4784
 
 
4785        <li class="covered" data-hits="1" data-linenumber="13">
 
4786          <span class="hits">1</span>
4787
 
 
4788          <code class="ruby">    context &#39;1 character name&#39; do</code>
 
4789        </li>
4790
 
 
4791        <li class="covered" data-hits="3" data-linenumber="14">
 
4792          <span class="hits">3</span>
4793
 
 
4794          <code class="ruby">      it { expect { described_class.create! name: &#39;a&#39;, schedule: schedule }.to raise_error ActiveRecord::RecordInvalid }</code>
 
4795        </li>
4796
 
 
4797        <li class="never" data-hits="" data-linenumber="15">
 
 
 
4800          <code class="ruby">    end</code>
4801
 
4801        </li>
4802
 
 
4803        <li class="never" data-hits="" data-linenumber="16">
 
 
 
4806          <code class="ruby"></code>
4807
 
4807        </li>
4808
 
 
4809        <li class="covered" data-hits="1" data-linenumber="17">
 
4810          <span class="hits">1</span>
4811
 
 
4812          <code class="ruby">    context &#39;2+ character name and title&#39; do</code>
 
4813        </li>
4814
 
 
4815        <li class="covered" data-hits="3" data-linenumber="18">
 
4816          <span class="hits">3</span>
4817
 
 
4818          <code class="ruby">      it { expect { described_class.find_or_create_by! name: &#39;as&#39;, schedule: schedule, number: 2 }.to_not raise_error }</code>
 
4819        </li>
4820
 
 
4821        <li class="never" data-hits="" data-linenumber="19">
 
 
 
4824          <code class="ruby">    end</code>
4825
 
4825        </li>
4826
 
 
4827        <li class="never" data-hits="" data-linenumber="20">
 
 
 
4830          <code class="ruby"></code>
4831
 
4831        </li>
4832
 
 
4833        <li class="covered" data-hits="1" data-linenumber="21">
 
4834          <span class="hits">1</span>
4835
 
 
4836          <code class="ruby">    context &#39;unique name&#39; do</code>
 
4837        </li>
4838
 
 
4839        <li class="covered" data-hits="1" data-linenumber="22">
 
4840          <span class="hits">1</span>
4841
 
 
4842          <code class="ruby">      it do</code>
4843
 
4843        </li>
4844
 
 
4845        <li class="covered" data-hits="1" data-linenumber="23">
 
4846          <span class="hits">1</span>
4847
 
 
4848          <code class="ruby">        rs = described_class.create! schedule: schedule, number: 3</code>
4849
 
4849        </li>
4850
 
 
4851        <li class="covered" data-hits="2" data-linenumber="24">
 
4852          <span class="hits">2</span>
4853
 
 
4854          <code class="ruby">        expect { described_class.create! schedule: schedule, number: 3 }.to raise_error ActiveRecord::RecordInvalid</code>
4855
 
4855        </li>
4856
 
 
4857        <li class="covered" data-hits="1" data-linenumber="25">
 
4858          <span class="hits">1</span>
4859
 
 
4860          <code class="ruby">        rs.destroy!</code>
4861
 
4861        </li>
4862
 
 
4863        <li class="never" data-hits="" data-linenumber="26">
 
 
 
4866          <code class="ruby">      end</code>
4867
 
4867        </li>
4868
 
 
4869        <li class="never" data-hits="" data-linenumber="27">
 
 
 
4872          <code class="ruby">    end</code>
4873
 
4873        </li>
4874
 
 
4875        <li class="never" data-hits="" data-linenumber="28">
 
 
 
4878          <code class="ruby"></code>
4879
 
4879        </li>
4880
 
 
4881        <li class="covered" data-hits="1" data-linenumber="29">
 
4882          <span class="hits">1</span>
4883
 
 
4884          <code class="ruby">    describe &#39;#to_s&#39; do</code>
 
4885        </li>
4886
 
 
4887        <li class="covered" data-hits="2" data-linenumber="30">
 
4888          <span class="hits">2</span>
4889
 
 
4890          <code class="ruby">      it { expect(subject.to_s).to eq &quot;#{subject.study} #{subject.schedule} #{subject.name} #{subject.number}&quot; }</code>
 
4891        </li>
4892
 
 
4893        <li class="never" data-hits="" data-linenumber="31">
 
 
 
4896          <code class="ruby">    end</code>
4897
 
4897        </li>
4898
 
 
4899        <li class="never" data-hits="" data-linenumber="32">
 
 
 
4902          <code class="ruby"></code>
4903
 
4903        </li>
4904
 
 
4905        <li class="covered" data-hits="1" data-linenumber="33">
 
4906          <span class="hits">1</span>
4907
 
 
4908          <code class="ruby">    describe &#39;#created_at today&#39; do</code>
 
4909        </li>
4910
 
 
4911        <li class="never" data-hits="" data-linenumber="34">
 
 
 
4914          <code class="ruby">      # expect record to be created within the last 5 minutes to check timestamp works</code>
 
4915        </li>
4916
 
 
4917        <li class="covered" data-hits="2" data-linenumber="35">
 
4918          <span class="hits">2</span>
4919
 
 
4920          <code class="ruby">      it { expect(Time.now - subject.created_at).to be &lt; 300 }</code>
4921
 
4921        </li>
4922
 
 
4923        <li class="never" data-hits="" data-linenumber="36">
 
 
 
4926          <code class="ruby">    end</code>
4927
 
4927        </li>
4928
 
 
4929        <li class="never" data-hits="" data-linenumber="37">
 
 
 
4932          <code class="ruby">  end</code>
4933
 
4933        </li>
4934
 
 
4935        <li class="never" data-hits="" data-linenumber="38">
 
 
 
4938          <code class="ruby">end</code>
4939
 
4939        </li>
4940
 
 
4941    </ol>
4942
 
4942  </pre>
4943
 
4943</div>
4944
 
 
 
4946        <div class="source_table" id="8db424b4a391ac2c4afa2d06f4e5154b8331e3ac">
 
4947  <div class="header">
 
4948    <h3>spec/assessment_instrument_spec.rb</h3>
4949
 
4949    <h4><span class="green">100.0 %</span> covered</h4>
 
4950    <div>
 
4951      <b>28</b> relevant lines. 
4952
 
4952      <span class="green"><b>28</b> lines covered</span> and
 
4953      <span class="red"><b>0</b> lines missed.</span>
 
4954    </div>
4955
 
4955  </div>
4956
 
 
4957  <pre>
 
4958    <ol>
 
 
4960        <li class="never" data-hits="" data-linenumber="1">
 
 
 
4963          <code class="ruby"># frozen_string_literal: true</code>
 
4964        </li>
4965
 
 
4966        <li class="never" data-hits="" data-linenumber="2">
 
 
 
4969          <code class="ruby"></code>
4970
 
4970        </li>
4971
 
 
4972        <li class="covered" data-hits="1" data-linenumber="3">
 
4973          <span class="hits">1</span>
4974
 
 
4975          <code class="ruby">require &#39;./models/init&#39;</code>
 
4976        </li>
4977
 
 
4978        <li class="never" data-hits="" data-linenumber="4">
 
 
 
4981          <code class="ruby"></code>
4982
 
4982        </li>
4983
 
 
4984        <li class="covered" data-hits="1" data-linenumber="5">
 
4985          <span class="hits">1</span>
4986
 
 
4987          <code class="ruby">RSpec.describe AssessmentInstrument, type: :model do</code>
4988
 
4988        </li>
4989
 
 
4990        <li class="covered" data-hits="5" data-linenumber="6">
 
4991          <span class="hits">5</span>
4992
 
 
4993          <code class="ruby">  subject { described_class.find_or_create_by! assessment: assess, instrument: instrument }</code>
4994
 
4994        </li>
4995
 
 
4996        <li class="never" data-hits="" data-linenumber="7">
 
 
 
4999          <code class="ruby"></code>
5000
 
5000        </li>
5001
 
 
5002        <li class="covered" data-hits="9" data-linenumber="8">
 
5003          <span class="hits">9</span>
5004
 
 
5005          <code class="ruby">  let!(:survey) { TestFactory.test_survey }</code>
5006
 
5006        </li>
5007
 
 
5008        <li class="covered" data-hits="9" data-linenumber="9">
 
5009          <span class="hits">9</span>
5010
 
 
5011          <code class="ruby">  let!(:instrument) { Instrument.find_by_name(AppConstants::TEST_INSTRUMENT) }</code>
5012
 
5012        </li>
5013
 
 
5014        <li class="covered" data-hits="9" data-linenumber="10">
 
5015          <span class="hits">9</span>
5016
 
 
5017          <code class="ruby">  let!(:user) { TestFactory.test_user }</code>
5018
 
5018        </li>
5019
 
 
5020        <li class="covered" data-hits="9" data-linenumber="11">
 
5021          <span class="hits">9</span>
5022
 
 
5023          <code class="ruby">  let!(:visit) { Visit.find_or_create_by! user: user, name: AppConstants::TEST_VISIT, survey: survey }</code>
5024
 
5024        </li>
5025
 
 
5026        <li class="covered" data-hits="9" data-linenumber="12">
 
5027          <span class="hits">9</span>
5028
 
 
5029          <code class="ruby">  let!(:assess) { Assessment.find_or_create_by! visit: visit }</code>
5030
 
5030        </li>
5031
 
 
5032        <li class="never" data-hits="" data-linenumber="13">
 
 
 
5035          <code class="ruby">  </code>
5036
 
5036        </li>
5037
 
 
5038        <li class="covered" data-hits="1" data-linenumber="14">
 
5039          <span class="hits">1</span>
5040
 
 
5041          <code class="ruby">  describe &#39;.create!&#39; do</code>
 
5042        </li>
5043
 
 
5044        <li class="covered" data-hits="1" data-linenumber="15">
 
5045          <span class="hits">1</span>
5046
 
 
5047          <code class="ruby">    context &#39;no instrument or assessment&#39; do</code>
 
5048        </li>
5049
 
 
5050        <li class="covered" data-hits="3" data-linenumber="16">
 
5051          <span class="hits">3</span>
5052
 
 
5053          <code class="ruby">      it { expect { described_class.create! }.to raise_error ActiveRecord::RecordInvalid }</code>
5054
 
5054        </li>
5055
 
 
5056        <li class="never" data-hits="" data-linenumber="17">
 
 
 
5059          <code class="ruby">    end</code>
5060
 
5060        </li>
5061
 
 
5062        <li class="never" data-hits="" data-linenumber="18">
 
 
 
5065          <code class="ruby"></code>
5066
 
5066        </li>
5067
 
 
5068        <li class="covered" data-hits="1" data-linenumber="19">
 
5069          <span class="hits">1</span>
5070
 
 
5071          <code class="ruby">    context &#39;no instrument&#39; do</code>
 
5072        </li>
5073
 
 
5074        <li class="covered" data-hits="3" data-linenumber="20">
 
5075          <span class="hits">3</span>
5076
 
 
5077          <code class="ruby">      it { expect { described_class.create! assessment: assess }.to raise_error ActiveRecord::RecordInvalid }</code>
5078
 
5078        </li>
5079
 
 
5080        <li class="never" data-hits="" data-linenumber="21">
 
 
 
5083          <code class="ruby">    end</code>
5084
 
5084        </li>
5085
 
 
5086        <li class="never" data-hits="" data-linenumber="22">
 
 
 
5089          <code class="ruby"></code>
5090
 
5090        </li>
5091
 
 
5092        <li class="covered" data-hits="1" data-linenumber="23">
 
5093          <span class="hits">1</span>
5094
 
 
5095          <code class="ruby">    context &#39;no assessment&#39; do</code>
 
5096        </li>
5097
 
 
5098        <li class="covered" data-hits="3" data-linenumber="24">
 
5099          <span class="hits">3</span>
5100
 
 
5101          <code class="ruby">      it { expect { described_class.create! instrument: instrument }.to raise_error ActiveRecord::RecordInvalid }</code>
5102
 
5102        </li>
5103
 
 
5104        <li class="never" data-hits="" data-linenumber="25">
 
 
 
5107          <code class="ruby">    end</code>
5108
 
5108        </li>
5109
 
 
5110        <li class="never" data-hits="" data-linenumber="26">
 
 
 
5113          <code class="ruby"> </code>
5114
 
5114        </li>
5115
 
 
5116        <li class="covered" data-hits="1" data-linenumber="27">
 
5117          <span class="hits">1</span>
5118
 
 
5119          <code class="ruby">    context &#39;with assessment and instrument&#39; do</code>
 
5120        </li>
5121
 
 
5122        <li class="covered" data-hits="1" data-linenumber="28">
 
5123          <span class="hits">1</span>
5124
 
 
5125          <code class="ruby">      it do </code>
5126
 
5126        </li>
5127
 
 
5128        <li class="covered" data-hits="2" data-linenumber="29">
 
5129          <span class="hits">2</span>
5130
 
 
5131          <code class="ruby">        expect { described_class.find_or_create_by instrument: instrument, assessment: assess }.not_to raise_error</code>
5132
 
5132        </li>
5133
 
 
5134        <li class="never" data-hits="" data-linenumber="30">
 
 
 
5137          <code class="ruby">      end</code>
5138
 
5138        </li>
5139
 
 
5140        <li class="never" data-hits="" data-linenumber="31">
 
 
 
5143          <code class="ruby">    end</code>
5144
 
5144        </li>
5145
 
 
5146        <li class="never" data-hits="" data-linenumber="32">
 
 
 
5149          <code class="ruby">  end</code>
5150
 
5150        </li>
5151
 
 
5152        <li class="never" data-hits="" data-linenumber="33">
 
 
 
5155          <code class="ruby"></code>
5156
 
5156        </li>
5157
 
 
5158        <li class="covered" data-hits="1" data-linenumber="34">
 
5159          <span class="hits">1</span>
5160
 
 
5161          <code class="ruby">  describe &#39;#destroy!&#39; do</code>
 
5162        </li>
5163
 
 
5164        <li class="covered" data-hits="1" data-linenumber="35">
 
5165          <span class="hits">1</span>
5166
 
 
5167          <code class="ruby">    before :each do</code>
5168
 
5168        </li>
5169
 
 
5170        <li class="covered" data-hits="2" data-linenumber="36">
 
5171          <span class="hits">2</span>
5172
 
 
5173          <code class="ruby">      subject.destroy!</code>
5174
 
5174        </li>
5175
 
 
5176        <li class="never" data-hits="" data-linenumber="37">
 
 
 
5179          <code class="ruby">    end</code>
5180
 
5180        </li>
5181
 
 
5182        <li class="never" data-hits="" data-linenumber="38">
 
 
 
5185          <code class="ruby"></code>
5186
 
5186        </li>
5187
 
 
5188        <li class="covered" data-hits="2" data-linenumber="39">
 
5189          <span class="hits">2</span>
5190
 
 
5191          <code class="ruby">    it { expect(Instrument.exists?(instrument.id)).to be_truthy }</code>
5192
 
5192        </li>
5193
 
 
5194        <li class="never" data-hits="" data-linenumber="40">
 
 
 
5197          <code class="ruby">   </code>
5198
 
5198        </li>
5199
 
 
5200        <li class="covered" data-hits="2" data-linenumber="41">
 
5201          <span class="hits">2</span>
5202
 
 
5203          <code class="ruby">    it { expect(Assessment.exists?(assess.id)).to be_truthy }</code>
5204
 
5204        </li>
5205
 
 
5206        <li class="never" data-hits="" data-linenumber="42">
 
 
 
5209          <code class="ruby">  end</code>
5210
 
5210        </li>
5211
 
 
5212        <li class="never" data-hits="" data-linenumber="43">
 
 
 
5215          <code class="ruby">  </code>
5216
 
5216        </li>
5217
 
 
5218        <li class="covered" data-hits="1" data-linenumber="44">
 
5219          <span class="hits">1</span>
5220
 
 
5221          <code class="ruby">  describe &#39;#to_s&#39; do</code>
 
5222        </li>
5223
 
 
5224        <li class="covered" data-hits="1" data-linenumber="45">
 
5225          <span class="hits">1</span>
5226
 
 
5227          <code class="ruby">    it do </code>
5228
 
5228        </li>
5229
 
 
5230        <li class="covered" data-hits="1" data-linenumber="46">
 
5231          <span class="hits">1</span>
5232
 
 
5233          <code class="ruby">      expect(subject.class.where(assessment: assess, instrument: instrument).first.to_s).to eq(&quot;#{assess} #{instrument}&quot;)</code>
 
5234        </li>
5235
 
 
5236        <li class="never" data-hits="" data-linenumber="47">
 
 
 
5239          <code class="ruby">    end</code>
5240
 
5240        </li>
5241
 
 
5242        <li class="never" data-hits="" data-linenumber="48">
 
 
 
5245          <code class="ruby">  end</code>
5246
 
5246        </li>
5247
 
 
5248        <li class="never" data-hits="" data-linenumber="49">
 
 
 
5251          <code class="ruby"></code>
5252
 
5252        </li>
5253
 
 
5254        <li class="covered" data-hits="1" data-linenumber="50">
 
5255          <span class="hits">1</span>
5256
 
 
5257          <code class="ruby">  describe &#39;#created_at today&#39; do</code>
 
5258        </li>
5259
 
 
5260        <li class="never" data-hits="" data-linenumber="51">
 
 
 
5263          <code class="ruby">    # expect record to be created within the last 5 minutes to check timestamp works</code>
 
5264        </li>
5265
 
 
5266        <li class="covered" data-hits="2" data-linenumber="52">
 
5267          <span class="hits">2</span>
5268
 
 
5269          <code class="ruby">    it { expect(Time.now - subject.created_at).to be &lt; 300 }</code>
5270
 
5270        </li>
5271
 
 
5272        <li class="never" data-hits="" data-linenumber="53">
 
 
 
5275          <code class="ruby">  end</code>
5276
 
5276        </li>
5277
 
 
5278        <li class="never" data-hits="" data-linenumber="54">
 
 
 
5281          <code class="ruby">end</code>
5282
 
5282        </li>
5283
 
 
5284    </ol>
5285
 
5285  </pre>
5286
 
5286</div>
5287
 
 
 
5289        <div class="source_table" id="6616413b524ca526b0f278ad9131942f4a669e2e">
 
5290  <div class="header">
 
5291    <h3>spec/assessment_spec.rb</h3>
5292
 
5292    <h4><span class="green">100.0 %</span> covered</h4>
 
5293    <div>
 
5294      <b>24</b> relevant lines. 
5295
 
5295      <span class="green"><b>24</b> lines covered</span> and
 
5296      <span class="red"><b>0</b> lines missed.</span>
 
5297    </div>
5298
 
5298  </div>
5299
 
 
5300  <pre>
 
5301    <ol>
 
 
5303        <li class="never" data-hits="" data-linenumber="1">
 
 
 
5306          <code class="ruby"># frozen_string_literal: true</code>
 
5307        </li>
5308
 
 
5309        <li class="never" data-hits="" data-linenumber="2">
 
 
 
5312          <code class="ruby"></code>
5313
 
5313        </li>
5314
 
 
5315        <li class="covered" data-hits="1" data-linenumber="3">
 
5316          <span class="hits">1</span>
5317
 
 
5318          <code class="ruby">require &#39;./models/init&#39;</code>
 
5319        </li>
5320
 
 
5321        <li class="never" data-hits="" data-linenumber="4">
 
 
 
5324          <code class="ruby"></code>
5325
 
5325        </li>
5326
 
 
5327        <li class="covered" data-hits="1" data-linenumber="5">
 
5328          <span class="hits">1</span>
5329
 
 
5330          <code class="ruby">RSpec.describe Assessment, type: :model do</code>
5331
 
5331        </li>
5332
 
 
5333        <li class="covered" data-hits="5" data-linenumber="6">
 
5334          <span class="hits">5</span>
5335
 
 
5336          <code class="ruby">  subject { described_class.find_or_create_by! visit: visit }</code>
5337
 
5337        </li>
5338
 
 
5339        <li class="covered" data-hits="8" data-linenumber="7">
 
5340          <span class="hits">8</span>
5341
 
 
5342          <code class="ruby">  let!(:survey) { TestFactory.test_survey }</code>
5343
 
5343        </li>
5344
 
 
5345        <li class="covered" data-hits="8" data-linenumber="8">
 
5346          <span class="hits">8</span>
5347
 
 
5348          <code class="ruby">  let!(:user) { TestFactory.test_user }</code>
5349
 
5349        </li>
5350
 
 
5351        <li class="covered" data-hits="8" data-linenumber="9">
 
5352          <span class="hits">8</span>
5353
 
 
5354          <code class="ruby">  let!(:visit) { Visit.find_or_create_by! user: user, name: AppConstants::TEST_VISIT, survey: survey }</code>
5355
 
5355        </li>
5356
 
 
5357        <li class="never" data-hits="" data-linenumber="10">
 
 
 
5360          <code class="ruby"></code>
5361
 
5361        </li>
5362
 
 
5363        <li class="covered" data-hits="1" data-linenumber="11">
 
5364          <span class="hits">1</span>
5365
 
 
5366          <code class="ruby">  describe &#39;.create!&#39; do</code>
 
5367        </li>
5368
 
 
5369        <li class="covered" data-hits="1" data-linenumber="12">
 
5370          <span class="hits">1</span>
5371
 
 
5372          <code class="ruby">    context &#39;with no visit&#39; do</code>
 
5373        </li>
5374
 
 
5375        <li class="covered" data-hits="3" data-linenumber="13">
 
5376          <span class="hits">3</span>
5377
 
 
5378          <code class="ruby">      it { expect { described_class.create! }.to raise_error ActiveRecord::RecordInvalid }</code>
5379
 
5379        </li>
5380
 
 
5381        <li class="never" data-hits="" data-linenumber="14">
 
 
 
5384          <code class="ruby">    end</code>
5385
 
5385        </li>
5386
 
 
5387        <li class="never" data-hits="" data-linenumber="15">
 
 
 
5390          <code class="ruby">  </code>
5391
 
5391        </li>
5392
 
 
5393        <li class="covered" data-hits="1" data-linenumber="16">
 
5394          <span class="hits">1</span>
5395
 
 
5396          <code class="ruby">    context &#39;with visit&#39; do</code>
 
5397        </li>
5398
 
 
5399        <li class="covered" data-hits="3" data-linenumber="17">
 
5400          <span class="hits">3</span>
5401
 
 
5402          <code class="ruby">      it { expect { described_class.find_or_create_by! visit: visit }.not_to raise_error }</code>
5403
 
5403        </li>
5404
 
 
5405        <li class="never" data-hits="" data-linenumber="18">
 
 
 
5408          <code class="ruby">    end</code>
5409
 
5409        </li>
5410
 
 
5411        <li class="never" data-hits="" data-linenumber="19">
 
 
 
5414          <code class="ruby"></code>
5415
 
5415        </li>
5416
 
 
5417        <li class="covered" data-hits="1" data-linenumber="20">
 
5418          <span class="hits">1</span>
5419
 
 
5420          <code class="ruby">    context &#39;with default order_number&#39; do</code>
 
5421        </li>
5422
 
 
5423        <li class="covered" data-hits="2" data-linenumber="21">
 
5424          <span class="hits">2</span>
5425
 
 
5426          <code class="ruby">      it { expect(subject.order_number).to be &gt; 0 } </code>
5427
 
5427        </li>
5428
 
 
5429        <li class="never" data-hits="" data-linenumber="22">
 
 
 
5432          <code class="ruby">    end</code>
5433
 
5433        </li>
5434
 
 
5435        <li class="never" data-hits="" data-linenumber="23">
 
 
 
5438          <code class="ruby">  end</code>
5439
 
5439        </li>
5440
 
 
5441        <li class="never" data-hits="" data-linenumber="24">
 
 
 
5444          <code class="ruby">  </code>
5445
 
5445        </li>
5446
 
 
5447        <li class="covered" data-hits="1" data-linenumber="25">
 
5448          <span class="hits">1</span>
5449
 
 
5450          <code class="ruby">  describe &#39;#user&#39; do</code>
 
5451        </li>
5452
 
 
5453        <li class="covered" data-hits="1" data-linenumber="26">
 
5454          <span class="hits">1</span>
5455
 
 
5456          <code class="ruby">    it do</code>
5457
 
5457        </li>
5458
 
 
5459        <li class="covered" data-hits="1" data-linenumber="27">
 
5460          <span class="hits">1</span>
5461
 
 
5462          <code class="ruby">      expect(subject.user.id).to eq(user.id) </code>
5463
 
5463        </li>
5464
 
 
5465        <li class="never" data-hits="" data-linenumber="28">
 
 
 
5468          <code class="ruby">    end</code>
5469
 
5469        </li>
5470
 
 
5471        <li class="never" data-hits="" data-linenumber="29">
 
 
 
5474          <code class="ruby">  end </code>
5475
 
5475        </li>
5476
 
 
5477        <li class="never" data-hits="" data-linenumber="30">
 
 
 
5480          <code class="ruby"></code>
5481
 
5481        </li>
5482
 
 
5483        <li class="covered" data-hits="1" data-linenumber="31">
 
5484          <span class="hits">1</span>
5485
 
 
5486          <code class="ruby">  describe &#39;#survey&#39; do</code>
 
5487        </li>
5488
 
 
5489        <li class="covered" data-hits="1" data-linenumber="32">
 
5490          <span class="hits">1</span>
5491
 
 
5492          <code class="ruby">    it do</code>
5493
 
5493        </li>
5494
 
 
5495        <li class="covered" data-hits="1" data-linenumber="33">
 
5496          <span class="hits">1</span>
5497
 
 
5498          <code class="ruby">      expect(subject.survey.id).to eq(survey.id) </code>
5499
 
5499        </li>
5500
 
 
5501        <li class="never" data-hits="" data-linenumber="34">
 
 
 
5504          <code class="ruby">    end</code>
5505
 
5505        </li>
5506
 
 
5507        <li class="never" data-hits="" data-linenumber="35">
 
 
 
5510          <code class="ruby">  end </code>
5511
 
5511        </li>
5512
 
 
5513        <li class="never" data-hits="" data-linenumber="36">
 
 
 
5516          <code class="ruby"></code>
5517
 
5517        </li>
5518
 
 
5519        <li class="covered" data-hits="1" data-linenumber="37">
 
5520          <span class="hits">1</span>
5521
 
 
5522          <code class="ruby">  describe &#39;#to_s&#39; do</code>
 
5523        </li>
5524
 
 
5525        <li class="covered" data-hits="1" data-linenumber="38">
 
5526          <span class="hits">1</span>
5527
 
 
5528          <code class="ruby">    it do </code>
5529
 
5529        </li>
5530
 
 
5531        <li class="covered" data-hits="1" data-linenumber="39">
 
5532          <span class="hits">1</span>
5533
 
 
5534          <code class="ruby">      expect(described_class.where(visit: visit).first.to_s).to eq(visit.to_s)</code>
5535
 
5535        </li>
5536
 
 
5537        <li class="never" data-hits="" data-linenumber="40">
 
 
 
5540          <code class="ruby">    end</code>
5541
 
5541        </li>
5542
 
 
5543        <li class="never" data-hits="" data-linenumber="41">
 
 
 
5546          <code class="ruby">  end</code>
5547
 
5547        </li>
5548
 
 
5549        <li class="never" data-hits="" data-linenumber="42">
 
 
 
5552          <code class="ruby"></code>
5553
 
5553        </li>
5554
 
 
5555        <li class="covered" data-hits="1" data-linenumber="43">
 
5556          <span class="hits">1</span>
5557
 
 
5558          <code class="ruby">  describe &#39;#created_at today&#39; do</code>
 
5559        </li>
5560
 
 
5561        <li class="never" data-hits="" data-linenumber="44">
 
 
 
5564          <code class="ruby">    # expect record to be created within the last 5 minutes to check timestamp works</code>
 
5565        </li>
5566
 
 
5567        <li class="covered" data-hits="2" data-linenumber="45">
 
5568          <span class="hits">2</span>
5569
 
 
5570          <code class="ruby">    it { expect(Time.now - subject.created_at).to be &lt; 300 }</code>
5571
 
5571        </li>
5572
 
 
5573        <li class="never" data-hits="" data-linenumber="46">
 
 
 
5576          <code class="ruby">  end</code>
5577
 
5577        </li>
5578
 
 
5579        <li class="never" data-hits="" data-linenumber="47">
 
 
 
5582          <code class="ruby">end</code>
5583
 
5583        </li>
5584
 
 
5585    </ol>
5586
 
5586  </pre>
5587
 
5587</div>
5588
 
 
 
5590        <div class="source_table" id="e317bbdd0de37fa13f714f7810947405632e5be8">
 
5591  <div class="header">
 
5592    <h3>spec/choice_spec.rb</h3>
5593
 
5593    <h4><span class="green">100.0 %</span> covered</h4>
 
5594    <div>
 
5595      <b>28</b> relevant lines. 
5596
 
5596      <span class="green"><b>28</b> lines covered</span> and
 
5597      <span class="red"><b>0</b> lines missed.</span>
 
5598    </div>
5599
 
5599  </div>
5600
 
 
5601  <pre>
 
5602    <ol>
 
 
5604        <li class="never" data-hits="" data-linenumber="1">
 
 
 
5607          <code class="ruby"># frozen_string_literal: true</code>
 
5608        </li>
5609
 
 
5610        <li class="never" data-hits="" data-linenumber="2">
 
 
 
5613          <code class="ruby"></code>
5614
 
5614        </li>
5615
 
 
5616        <li class="covered" data-hits="1" data-linenumber="3">
 
5617          <span class="hits">1</span>
5618
 
 
5619          <code class="ruby">require &#39;./models/init&#39;</code>
 
5620        </li>
5621
 
 
5622        <li class="never" data-hits="" data-linenumber="4">
 
 
 
5625          <code class="ruby"></code>
5626
 
5626        </li>
5627
 
 
5628        <li class="covered" data-hits="1" data-linenumber="5">
 
5629          <span class="hits">1</span>
5630
 
 
5631          <code class="ruby">RSpec.describe Choice, type: :model do</code>
5632
 
5632        </li>
5633
 
 
5634        <li class="covered" data-hits="2" data-linenumber="6">
 
5635          <span class="hits">2</span>
5636
 
 
5637          <code class="ruby">  subject { described_class.find_or_create_by! response_scale: scale, value: &#39;val&#39;, description: &#39;text&#39; }</code>
 
5638        </li>
5639
 
 
5640        <li class="covered" data-hits="7" data-linenumber="7">
 
5641          <span class="hits">7</span>
5642
 
 
5643          <code class="ruby">  let!(:scale) { TestFactory.test_response_scale }</code>
5644
 
5644        </li>
5645
 
 
5646        <li class="never" data-hits="" data-linenumber="8">
 
 
 
5649          <code class="ruby"></code>
5650
 
5650        </li>
5651
 
 
5652        <li class="covered" data-hits="1" data-linenumber="9">
 
5653          <span class="hits">1</span>
5654
 
 
5655          <code class="ruby">  describe &#39;.create!&#39; do</code>
 
5656        </li>
5657
 
 
5658        <li class="covered" data-hits="1" data-linenumber="10">
 
5659          <span class="hits">1</span>
5660
 
 
5661          <code class="ruby">    context &#39;without response scale or value&#39; do</code>
 
5662        </li>
5663
 
 
5664        <li class="covered" data-hits="3" data-linenumber="11">
 
5665          <span class="hits">3</span>
5666
 
 
5667          <code class="ruby">      it { expect { described_class.create! }.to raise_error ActiveRecord::RecordInvalid }</code>
5668
 
5668        </li>
5669
 
 
5670        <li class="never" data-hits="" data-linenumber="12">
 
 
 
5673          <code class="ruby">    end</code>
5674
 
5674        </li>
5675
 
 
5676        <li class="never" data-hits="" data-linenumber="13">
 
 
 
5679          <code class="ruby"></code>
5680
 
5680        </li>
5681
 
 
5682        <li class="covered" data-hits="1" data-linenumber="14">
 
5683          <span class="hits">1</span>
5684
 
 
5685          <code class="ruby">    context &#39;without response scale&#39; do</code>
 
5686        </li>
5687
 
 
5688        <li class="covered" data-hits="3" data-linenumber="15">
 
5689          <span class="hits">3</span>
5690
 
 
5691          <code class="ruby">      it { expect { described_class.create! value: &#39;val&#39;, description: &#39;text&#39; }.to raise_error ActiveRecord::RecordInvalid }</code>
 
5692        </li>
5693
 
 
5694        <li class="never" data-hits="" data-linenumber="16">
 
 
 
5697          <code class="ruby">    end</code>
5698
 
5698        </li>
5699
 
 
5700        <li class="never" data-hits="" data-linenumber="17">
 
 
 
5703          <code class="ruby">    </code>
5704
 
5704        </li>
5705
 
 
5706        <li class="covered" data-hits="1" data-linenumber="18">
 
5707          <span class="hits">1</span>
5708
 
 
5709          <code class="ruby">    it &#39;with response scale, value and description&#39; do</code>
 
5710        </li>
5711
 
 
5712        <li class="covered" data-hits="2" data-linenumber="19">
 
5713          <span class="hits">2</span>
5714
 
 
5715          <code class="ruby">      expect { described_class.create! response_scale: scale, value: &#39;val&#39;, description: &#39;text&#39; }.not_to raise_error</code>
 
5716        </li>
5717
 
 
5718        <li class="covered" data-hits="1" data-linenumber="20">
 
5719          <span class="hits">1</span>
5720
 
 
5721          <code class="ruby">      c = Choice.find_by response_scale_id: scale.id, value: &#39;val&#39;</code>
 
5722        </li>
5723
 
 
5724        <li class="covered" data-hits="1" data-linenumber="21">
 
5725          <span class="hits">1</span>
5726
 
 
5727          <code class="ruby">      c.destroy!</code>
5728
 
5728        </li>
5729
 
 
5730        <li class="never" data-hits="" data-linenumber="22">
 
 
 
5733          <code class="ruby">    end</code>
5734
 
5734        </li>
5735
 
 
5736        <li class="never" data-hits="" data-linenumber="23">
 
 
 
5739          <code class="ruby">  end</code>
5740
 
5740        </li>
5741
 
 
5742        <li class="never" data-hits="" data-linenumber="24">
 
 
 
5745          <code class="ruby"></code>
5746
 
5746        </li>
5747
 
 
5748        <li class="covered" data-hits="1" data-linenumber="25">
 
5749          <span class="hits">1</span>
5750
 
 
5751          <code class="ruby">  describe &#39;#destroy!&#39; do</code>
 
5752        </li>
5753
 
 
5754        <li class="covered" data-hits="1" data-linenumber="26">
 
5755          <span class="hits">1</span>
5756
 
 
5757          <code class="ruby">    it do</code>
5758
 
5758        </li>
5759
 
 
5760        <li class="covered" data-hits="1" data-linenumber="27">
 
5761          <span class="hits">1</span>
5762
 
 
5763          <code class="ruby">      c = Choice.find_or_create_by! response_scale: scale, value: &#39;val&#39;, description: &#39;text&#39;</code>
 
5764        </li>
5765
 
 
5766        <li class="covered" data-hits="1" data-linenumber="28">
 
5767          <span class="hits">1</span>
5768
 
 
5769          <code class="ruby">      scale.choices.concat(c)</code>
5770
 
5770        </li>
5771
 
 
5772        <li class="covered" data-hits="1" data-linenumber="29">
 
5773          <span class="hits">1</span>
5774
 
 
5775          <code class="ruby">      c.destroy!</code>
5776
 
5776        </li>
5777
 
 
5778        <li class="covered" data-hits="1" data-linenumber="30">
 
5779          <span class="hits">1</span>
5780
 
 
5781          <code class="ruby">      scale.save!</code>
5782
 
5782        </li>
5783
 
 
5784        <li class="covered" data-hits="1" data-linenumber="31">
 
5785          <span class="hits">1</span>
5786
 
 
5787          <code class="ruby">      expect(scale.choices.count.to_s).to eq &#39;0&#39;</code>
 
5788        </li>
5789
 
 
5790        <li class="never" data-hits="" data-linenumber="32">
 
 
 
5793          <code class="ruby">    end    </code>
5794
 
5794        </li>
5795
 
 
5796        <li class="never" data-hits="" data-linenumber="33">
 
 
 
5799          <code class="ruby">  end</code>
5800
 
5800        </li>
5801
 
 
5802        <li class="never" data-hits="" data-linenumber="34">
 
 
 
5805          <code class="ruby"></code>
5806
 
5806        </li>
5807
 
 
5808        <li class="covered" data-hits="1" data-linenumber="35">
 
5809          <span class="hits">1</span>
5810
 
 
5811          <code class="ruby">  describe &#39;#to_s&#39; do</code>
 
5812        </li>
5813
 
 
5814        <li class="covered" data-hits="1" data-linenumber="36">
 
5815          <span class="hits">1</span>
5816
 
 
5817          <code class="ruby">    it do</code>
5818
 
5818        </li>
5819
 
 
5820        <li class="covered" data-hits="1" data-linenumber="37">
 
5821          <span class="hits">1</span>
5822
 
 
5823          <code class="ruby">      c = Choice.find_or_create_by! response_scale: scale, value: &#39;val&#39;, description: &#39;text&#39;</code>
 
5824        </li>
5825
 
 
5826        <li class="covered" data-hits="1" data-linenumber="38">
 
5827          <span class="hits">1</span>
5828
 
 
5829          <code class="ruby">      expect(c.to_s).to eq(&quot;#{scale} val text&quot;) </code>
 
5830        </li>
5831
 
 
5832        <li class="covered" data-hits="1" data-linenumber="39">
 
5833          <span class="hits">1</span>
5834
 
 
5835          <code class="ruby">      c = Choice.find_by response_scale_id: scale.id, value: &#39;val&#39;</code>
 
5836        </li>
5837
 
 
5838        <li class="covered" data-hits="1" data-linenumber="40">
 
5839          <span class="hits">1</span>
5840
 
 
5841          <code class="ruby">      c.destroy!</code>
5842
 
5842        </li>
5843
 
 
5844        <li class="never" data-hits="" data-linenumber="41">
 
 
 
5847          <code class="ruby">    end</code>
5848
 
5848        </li>
5849
 
 
5850        <li class="never" data-hits="" data-linenumber="42">
 
 
 
5853          <code class="ruby">  end</code>
5854
 
5854        </li>
5855
 
 
5856        <li class="never" data-hits="" data-linenumber="43">
 
 
 
5859          <code class="ruby"></code>
5860
 
5860        </li>
5861
 
 
5862        <li class="covered" data-hits="1" data-linenumber="44">
 
5863          <span class="hits">1</span>
5864
 
 
5865          <code class="ruby">  describe &#39;#created_at today&#39; do</code>
 
5866        </li>
5867
 
 
5868        <li class="never" data-hits="" data-linenumber="45">
 
 
 
5871          <code class="ruby">    # expect record to be created within the last 5 minutes to check timestamp works</code>
 
5872        </li>
5873
 
 
5874        <li class="covered" data-hits="2" data-linenumber="46">
 
5875          <span class="hits">2</span>
5876
 
 
5877          <code class="ruby">    it { expect(Time.now - subject.created_at).to be &lt; 300 }</code>
5878
 
5878        </li>
5879
 
 
5880        <li class="never" data-hits="" data-linenumber="47">
 
 
 
5883          <code class="ruby">  end</code>
5884
 
5884        </li>
5885
 
 
5886        <li class="never" data-hits="" data-linenumber="48">
 
 
 
5889          <code class="ruby">end</code>
5890
 
5890        </li>
5891
 
 
5892    </ol>
5893
 
5893  </pre>
5894
 
5894</div>
5895
 
 
 
5897        <div class="source_table" id="c3be4fb5424413adb7ddba57102c9a048427a643">
 
5898  <div class="header">
 
5899    <h3>spec/factories.rb</h3>
5900
 
5900    <h4><span class="green">100.0 %</span> covered</h4>
 
5901    <div>
 
5902      <b>16</b> relevant lines. 
5903
 
5903      <span class="green"><b>16</b> lines covered</span> and
 
5904      <span class="red"><b>0</b> lines missed.</span>
 
5905    </div>
5906
 
5906  </div>
5907
 
 
5908  <pre>
 
5909    <ol>
 
 
5911        <li class="never" data-hits="" data-linenumber="1">
 
 
 
5914          <code class="ruby"># frozen_string_literal: true</code>
 
5915        </li>
5916
 
 
5917        <li class="never" data-hits="" data-linenumber="2">
 
 
 
5920          <code class="ruby"></code>
5921
 
5921        </li>
5922
 
 
5923        <li class="covered" data-hits="1" data-linenumber="3">
 
5924          <span class="hits">1</span>
5925
 
 
5926          <code class="ruby">FactoryBot.define do</code>
5927
 
5927        </li>
5928
 
 
5929        <li class="covered" data-hits="1" data-linenumber="4">
 
5930          <span class="hits">1</span>
5931
 
 
5932          <code class="ruby">  factory :test_folder, class: &#39;Folder&#39; do</code>
 
5933        </li>
5934
 
 
5935        <li class="covered" data-hits="1" data-linenumber="5">
 
5936          <span class="hits">1</span>
5937
 
 
5938          <code class="ruby">    username AppConstants::TEST_FOLDER</code>
5939
 
5939        </li>
5940
 
 
5941        <li class="never" data-hits="" data-linenumber="6">
 
 
 
5944          <code class="ruby">  end</code>
5945
 
5945        </li>
5946
 
 
5947        <li class="never" data-hits="" data-linenumber="7">
 
 
 
5950          <code class="ruby"></code>
5951
 
5951        </li>
5952
 
 
5953        <li class="covered" data-hits="1" data-linenumber="8">
 
5954          <span class="hits">1</span>
5955
 
 
5956          <code class="ruby">  factory :test_project, class: &#39;Project&#39; do</code>
 
5957        </li>
5958
 
 
5959        <li class="covered" data-hits="1" data-linenumber="9">
 
5960          <span class="hits">1</span>
5961
 
 
5962          <code class="ruby">    username AppConstants::TEST_PROJECT</code>
5963
 
5963        </li>
5964
 
 
5965        <li class="never" data-hits="" data-linenumber="10">
 
 
 
5968          <code class="ruby">  end</code>
5969
 
5969        </li>
5970
 
 
5971        <li class="never" data-hits="" data-linenumber="11">
 
 
 
5974          <code class="ruby"></code>
5975
 
5975        </li>
5976
 
 
5977        <li class="covered" data-hits="1" data-linenumber="12">
 
5978          <span class="hits">1</span>
5979
 
 
5980          <code class="ruby">  factory :test_user, class: &#39;User&#39; do</code>
 
5981        </li>
5982
 
 
5983        <li class="covered" data-hits="1" data-linenumber="13">
 
5984          <span class="hits">1</span>
5985
 
 
5986          <code class="ruby">    username AppConstants::TEST_USER</code>
5987
 
5987        </li>
5988
 
 
5989        <li class="never" data-hits="" data-linenumber="14">
 
 
 
5992          <code class="ruby">  end</code>
5993
 
5993        </li>
5994
 
 
5995        <li class="never" data-hits="" data-linenumber="15">
 
 
 
5998          <code class="ruby"></code>
5999
 
5999        </li>
6000
 
 
6001        <li class="covered" data-hits="1" data-linenumber="16">
 
6002          <span class="hits">1</span>
6003
 
 
6004          <code class="ruby">  factory :test_study, class: &#39;Study&#39; do</code>
 
6005        </li>
6006
 
 
6007        <li class="covered" data-hits="1" data-linenumber="17">
 
6008          <span class="hits">1</span>
6009
 
 
6010          <code class="ruby">    name AppConstants::TEST_STUDY</code>
6011
 
6011        </li>
6012
 
 
6013        <li class="never" data-hits="" data-linenumber="18">
 
 
 
6016          <code class="ruby">  end</code>
6017
 
6017        </li>
6018
 
 
6019        <li class="never" data-hits="" data-linenumber="19">
 
 
 
6022          <code class="ruby">  </code>
6023
 
6023        </li>
6024
 
 
6025        <li class="covered" data-hits="1" data-linenumber="20">
 
6026          <span class="hits">1</span>
6027
 
 
6028          <code class="ruby">  factory :test_survey, class: &#39;Survey&#39; do</code>
 
6029        </li>
6030
 
 
6031        <li class="covered" data-hits="1" data-linenumber="21">
 
6032          <span class="hits">1</span>
6033
 
 
6034          <code class="ruby">    name AppConstants::TEST_SURVEY</code>
6035
 
6035        </li>
6036
 
 
6037        <li class="never" data-hits="" data-linenumber="22">
 
 
 
6040          <code class="ruby">  end</code>
6041
 
6041        </li>
6042
 
 
6043        <li class="never" data-hits="" data-linenumber="23">
 
 
 
6046          <code class="ruby"></code>
6047
 
6047        </li>
6048
 
 
6049        <li class="covered" data-hits="1" data-linenumber="24">
 
6050          <span class="hits">1</span>
6051
 
 
6052          <code class="ruby">  factory :test_response_scale, class: &#39;ResponseScale&#39; do</code>
 
6053        </li>
6054
 
 
6055        <li class="covered" data-hits="1" data-linenumber="25">
 
6056          <span class="hits">1</span>
6057
 
 
6058          <code class="ruby">    name AppConstants::TEST_RESPONSE_SCALE</code>
6059
 
6059        </li>
6060
 
 
6061        <li class="never" data-hits="" data-linenumber="26">
 
 
 
6064          <code class="ruby">  end</code>
6065
 
6065        </li>
6066
 
 
6067        <li class="never" data-hits="" data-linenumber="27">
 
 
 
6070          <code class="ruby">  </code>
6071
 
6071        </li>
6072
 
 
6073        <li class="covered" data-hits="1" data-linenumber="28">
 
6074          <span class="hits">1</span>
6075
 
 
6076          <code class="ruby">  factory :timmy, class: &#39;User&#39; do</code>
 
6077        </li>
6078
 
 
6079        <li class="covered" data-hits="1" data-linenumber="29">
 
6080          <span class="hits">1</span>
6081
 
 
6082          <code class="ruby">    username &#39;Timmy&#39;</code>
 
6083        </li>
6084
 
 
6085        <li class="covered" data-hits="1" data-linenumber="30">
 
6086          <span class="hits">1</span>
6087
 
 
6088          <code class="ruby">    access_token &#39;AccessToken&#39;</code>
 
6089        </li>
6090
 
 
6091        <li class="never" data-hits="" data-linenumber="31">
 
 
 
6094          <code class="ruby">  end</code>
6095
 
6095        </li>
6096
 
 
6097        <li class="never" data-hits="" data-linenumber="32">
 
 
 
6100          <code class="ruby">end</code>
6101
 
6101        </li>
6102
 
 
6103    </ol>
6104
 
6104  </pre>
6105
 
6105</div>
6106
 
 
 
6108        <div class="source_table" id="0993cdcebd2cf5e81035cef9bd60cb0a457334ac">
 
6109  <div class="header">
 
6110    <h3>spec/folder_spec.rb</h3>
6111
 
6111    <h4><span class="green">100.0 %</span> covered</h4>
 
6112    <div>
 
6113      <b>27</b> relevant lines. 
6114
 
6114      <span class="green"><b>27</b> lines covered</span> and
 
6115      <span class="red"><b>0</b> lines missed.</span>
 
6116    </div>
6117
 
6117  </div>
6118
 
 
6119  <pre>
 
6120    <ol>
 
 
6122        <li class="never" data-hits="" data-linenumber="1">
 
 
 
6125          <code class="ruby"># frozen_string_literal: true</code>
 
6126        </li>
6127
 
 
6128        <li class="never" data-hits="" data-linenumber="2">
 
 
 
6131          <code class="ruby"></code>
6132
 
6132        </li>
6133
 
 
6134        <li class="covered" data-hits="1" data-linenumber="3">
 
6135          <span class="hits">1</span>
6136
 
 
6137          <code class="ruby">RSpec.describe Folder, type: :model do</code>
6138
 
6138        </li>
6139
 
 
6140        <li class="covered" data-hits="3" data-linenumber="4">
 
6141          <span class="hits">3</span>
6142
 
 
6143          <code class="ruby">  subject { TestFactory.test_folder }</code>
6144
 
6144        </li>
6145
 
 
6146        <li class="covered" data-hits="8" data-linenumber="5">
 
6147          <span class="hits">8</span>
6148
 
 
6149          <code class="ruby">  let!(:project1) { Project.find_or_create_by! name: AppConstants::TEST_PROJECT, title: AppConstants::TEST_PROJECT_TITLE } </code>
6150
 
6150        </li>
6151
 
 
6152        <li class="covered" data-hits="8" data-linenumber="6">
 
6153          <span class="hits">8</span>
6154
 
 
6155          <code class="ruby">  let!(:project2) { Project.find_or_create_by! name: &#39;Project 2&#39;, title: &#39;Test Project 2 title&#39; } </code>
 
6156        </li>
6157
 
 
6158        <li class="never" data-hits="" data-linenumber="7">
 
 
 
6161          <code class="ruby">  </code>
6162
 
6162        </li>
6163
 
 
6164        <li class="covered" data-hits="1" data-linenumber="8">
 
6165          <span class="hits">1</span>
6166
 
 
6167          <code class="ruby">  describe &#39;.create!&#39; do</code>
 
6168        </li>
6169
 
 
6170        <li class="covered" data-hits="1" data-linenumber="9">
 
6171          <span class="hits">1</span>
6172
 
 
6173          <code class="ruby">    context &#39;without a name&#39; do</code>
 
6174        </li>
6175
 
 
6176        <li class="covered" data-hits="3" data-linenumber="10">
 
6177          <span class="hits">3</span>
6178
 
 
6179          <code class="ruby">      it { expect { described_class.create! }.to raise_error ActiveRecord::RecordInvalid }</code>
6180
 
6180        </li>
6181
 
 
6182        <li class="never" data-hits="" data-linenumber="11">
 
 
 
6185          <code class="ruby">    end  </code>
6186
 
6186        </li>
6187
 
 
6188        <li class="never" data-hits="" data-linenumber="12">
 
 
 
6191          <code class="ruby"></code>
6192
 
6192        </li>
6193
 
 
6194        <li class="covered" data-hits="1" data-linenumber="13">
 
6195          <span class="hits">1</span>
6196
 
 
6197          <code class="ruby">    context &#39;with 1 character name&#39; do</code>
 
6198        </li>
6199
 
 
6200        <li class="covered" data-hits="3" data-linenumber="14">
 
6201          <span class="hits">3</span>
6202
 
 
6203          <code class="ruby">      it { expect { described_class.create! name: &#39;a&#39; }.to raise_error ActiveRecord::RecordInvalid }</code>
 
6204        </li>
6205
 
 
6206        <li class="never" data-hits="" data-linenumber="15">
 
 
 
6209          <code class="ruby">    end</code>
6210
 
6210        </li>
6211
 
 
6212        <li class="never" data-hits="" data-linenumber="16">
 
 
 
6215          <code class="ruby">    </code>
6216
 
6216        </li>
6217
 
 
6218        <li class="covered" data-hits="1" data-linenumber="17">
 
6219          <span class="hits">1</span>
6220
 
 
6221          <code class="ruby">    context &#39;with 2+ character name&#39; do</code>
 
6222        </li>
6223
 
 
6224        <li class="covered" data-hits="3" data-linenumber="18">
 
6225          <span class="hits">3</span>
6226
 
 
6227          <code class="ruby">      it { expect { described_class.find_or_create_by! name: &#39;as&#39; }.to_not raise_error }</code>
 
6228        </li>
6229
 
 
6230        <li class="never" data-hits="" data-linenumber="19">
 
 
 
6233          <code class="ruby">    end</code>
6234
 
6234        </li>
6235
 
 
6236        <li class="never" data-hits="" data-linenumber="20">
 
 
 
6239          <code class="ruby"></code>
6240
 
6240        </li>
6241
 
 
6242        <li class="covered" data-hits="1" data-linenumber="21">
 
6243          <span class="hits">1</span>
6244
 
 
6245          <code class="ruby">    context &#39;with unique name&#39; do</code>
 
6246        </li>
6247
 
 
6248        <li class="covered" data-hits="1" data-linenumber="22">
 
6249          <span class="hits">1</span>
6250
 
 
6251          <code class="ruby">      it do</code>
6252
 
6252        </li>
6253
 
 
6254        <li class="covered" data-hits="1" data-linenumber="23">
 
6255          <span class="hits">1</span>
6256
 
 
6257          <code class="ruby">        rs = described_class.create! name: &#39;a12&#39;</code>
 
6258        </li>
6259
 
 
6260        <li class="covered" data-hits="2" data-linenumber="24">
 
6261          <span class="hits">2</span>
6262
 
 
6263          <code class="ruby">        expect { described_class.create! name: &#39;a12&#39; }.to raise_error ActiveRecord::RecordInvalid</code>
 
6264        </li>
6265
 
 
6266        <li class="covered" data-hits="1" data-linenumber="25">
 
6267          <span class="hits">1</span>
6268
 
 
6269          <code class="ruby">        rs.destroy!</code>
6270
 
6270        </li>
6271
 
 
6272        <li class="never" data-hits="" data-linenumber="26">
 
 
 
6275          <code class="ruby">      end</code>
6276
 
6276        </li>
6277
 
 
6278        <li class="never" data-hits="" data-linenumber="27">
 
 
 
6281          <code class="ruby">    end</code>
6282
 
6282        </li>
6283
 
 
6284        <li class="never" data-hits="" data-linenumber="28">
 
 
 
6287          <code class="ruby">  end</code>
6288
 
6288        </li>
6289
 
 
6290        <li class="never" data-hits="" data-linenumber="29">
 
 
 
6293          <code class="ruby"></code>
6294
 
6294        </li>
6295
 
 
6296        <li class="covered" data-hits="1" data-linenumber="30">
 
6297          <span class="hits">1</span>
6298
 
 
6299          <code class="ruby">  describe &#39;#destroy!&#39; do</code>
 
6300        </li>
6301
 
 
6302        <li class="covered" data-hits="1" data-linenumber="31">
 
6303          <span class="hits">1</span>
6304
 
 
6305          <code class="ruby">    context &#39;with projects&#39; do </code>
 
6306        </li>
6307
 
 
6308        <li class="covered" data-hits="1" data-linenumber="32">
 
6309          <span class="hits">1</span>
6310
 
 
6311          <code class="ruby">      it do</code>
6312
 
6312        </li>
6313
 
 
6314        <li class="covered" data-hits="1" data-linenumber="33">
 
6315          <span class="hits">1</span>
6316
 
 
6317          <code class="ruby">        folder = described_class.create! name: &#39;a13&#39;</code>
 
6318        </li>
6319
 
 
6320        <li class="covered" data-hits="1" data-linenumber="34">
 
6321          <span class="hits">1</span>
6322
 
 
6323          <code class="ruby">        folder.projects.concat [project1, project2]</code>
6324
 
6324        </li>
6325
 
 
6326        <li class="covered" data-hits="1" data-linenumber="35">
 
6327          <span class="hits">1</span>
6328
 
 
6329          <code class="ruby">        folder.destroy! </code>
6330
 
6330        </li>
6331
 
 
6332        <li class="covered" data-hits="1" data-linenumber="36">
 
6333          <span class="hits">1</span>
6334
 
 
6335          <code class="ruby">        expect(project1).not_to be_nil </code>
6336
 
6336        </li>
6337
 
 
6338        <li class="never" data-hits="" data-linenumber="37">
 
 
 
6341          <code class="ruby">      end</code>
6342
 
6342        </li>
6343
 
 
6344        <li class="never" data-hits="" data-linenumber="38">
 
 
 
6347          <code class="ruby">    end</code>
6348
 
6348        </li>
6349
 
 
6350        <li class="never" data-hits="" data-linenumber="39">
 
 
 
6353          <code class="ruby">  end</code>
6354
 
6354        </li>
6355
 
 
6356        <li class="never" data-hits="" data-linenumber="40">
 
 
 
6359          <code class="ruby">  </code>
6360
 
6360        </li>
6361
 
 
6362        <li class="covered" data-hits="1" data-linenumber="41">
 
6363          <span class="hits">1</span>
6364
 
 
6365          <code class="ruby">  describe &#39;#to_s&#39; do</code>
 
6366        </li>
6367
 
 
6368        <li class="covered" data-hits="2" data-linenumber="42">
 
6369          <span class="hits">2</span>
6370
 
 
6371          <code class="ruby">    it { expect(subject.to_s).to eq AppConstants::TEST_FOLDER }</code>
6372
 
6372        </li>
6373
 
 
6374        <li class="never" data-hits="" data-linenumber="43">
 
 
 
6377          <code class="ruby">  end</code>
6378
 
6378        </li>
6379
 
 
6380        <li class="never" data-hits="" data-linenumber="44">
 
 
 
6383          <code class="ruby"></code>
6384
 
6384        </li>
6385
 
 
6386        <li class="covered" data-hits="1" data-linenumber="45">
 
6387          <span class="hits">1</span>
6388
 
 
6389          <code class="ruby">  describe &#39;#created_at today&#39; do</code>
 
6390        </li>
6391
 
 
6392        <li class="never" data-hits="" data-linenumber="46">
 
 
 
6395          <code class="ruby">    # expect record to be created within the last 5 minutes to check timestamp works</code>
 
6396        </li>
6397
 
 
6398        <li class="covered" data-hits="2" data-linenumber="47">
 
6399          <span class="hits">2</span>
6400
 
 
6401          <code class="ruby">    it { expect(Time.now - subject.created_at).to be &lt; 300 }</code>
6402
 
6402        </li>
6403
 
 
6404        <li class="never" data-hits="" data-linenumber="48">
 
 
 
6407          <code class="ruby">  end</code>
6408
 
6408        </li>
6409
 
 
6410        <li class="never" data-hits="" data-linenumber="49">
 
 
 
6413          <code class="ruby">end</code>
6414
 
6414        </li>
6415
 
 
6416    </ol>
6417
 
6417  </pre>
6418
 
6418</div>
6419
 
 
 
6421        <div class="source_table" id="80d02a9543cf12a564eb1da503ed251086f13e08">
 
6422  <div class="header">
 
6423    <h3>spec/instrument_loader_spec.rb</h3>
6424
 
6424    <h4><span class="green">100.0 %</span> covered</h4>
 
6425    <div>
 
6426      <b>11</b> relevant lines. 
6427
 
6427      <span class="green"><b>11</b> lines covered</span> and
 
6428      <span class="red"><b>0</b> lines missed.</span>
 
6429    </div>
6430
 
6430  </div>
6431
 
 
6432  <pre>
 
6433    <ol>
 
 
6435        <li class="never" data-hits="" data-linenumber="1">
 
 
 
6438          <code class="ruby"># frozen_string_literal: true</code>
 
6439        </li>
6440
 
 
6441        <li class="never" data-hits="" data-linenumber="2">
 
 
 
6444          <code class="ruby"></code>
6445
 
6445        </li>
6446
 
 
6447        <li class="covered" data-hits="1" data-linenumber="3">
 
6448          <span class="hits">1</span>
6449
 
 
6450          <code class="ruby">RSpec.describe InstrumentLoader do</code>
6451
 
6451        </li>
6452
 
 
6453        <li class="covered" data-hits="4" data-linenumber="4">
 
6454          <span class="hits">4</span>
6455
 
 
6456          <code class="ruby">  subject { described_class.instance }</code>
6457
 
6457        </li>
6458
 
 
6459        <li class="covered" data-hits="4" data-linenumber="5">
 
6460          <span class="hits">4</span>
6461
 
 
6462          <code class="ruby">  let!(:instrument) { Instrument.find_by_name(AppConstants::TEST_INSTRUMENT) }</code>
6463
 
6463        </li>
6464
 
 
6465        <li class="never" data-hits="" data-linenumber="6">
 
 
 
6468          <code class="ruby"></code>
6469
 
6469        </li>
6470
 
 
6471        <li class="covered" data-hits="1" data-linenumber="7">
 
6472          <span class="hits">1</span>
6473
 
 
6474          <code class="ruby">  context &#39;existing instrument&#39; do</code>
 
6475        </li>
6476
 
 
6477        <li class="covered" data-hits="1" data-linenumber="8">
 
6478          <span class="hits">1</span>
6479
 
 
6480          <code class="ruby">    context &#39;overwrite false&#39; do</code>
 
6481        </li>
6482
 
 
6483        <li class="covered" data-hits="3" data-linenumber="9">
 
6484          <span class="hits">3</span>
6485
 
 
6486          <code class="ruby">      it { expect { subject.load(instrument: instrument) }.to raise_error(RuntimeError) }</code>
6487
 
6487        </li>
6488
 
 
6489        <li class="never" data-hits="" data-linenumber="10">
 
 
 
6492          <code class="ruby">    end</code>
6493
 
6493        </li>
6494
 
 
6495        <li class="never" data-hits="" data-linenumber="11">
 
 
 
6498          <code class="ruby"></code>
6499
 
6499        </li>
6500
 
 
6501        <li class="covered" data-hits="1" data-linenumber="12">
 
6502          <span class="hits">1</span>
6503
 
 
6504          <code class="ruby">    context &#39;overwrite true&#39; do</code>
 
6505        </li>
6506
 
 
6507        <li class="covered" data-hits="2" data-linenumber="13">
 
6508          <span class="hits">2</span>
6509
 
 
6510          <code class="ruby">      it { expect(subject.load(instrument: instrument, overwrite: true).name).to eq(instrument.name) }</code>
6511
 
6511        </li>
6512
 
 
6513        <li class="never" data-hits="" data-linenumber="14">
 
 
 
6516          <code class="ruby">    end</code>
6517
 
6517        </li>
6518
 
 
6519        <li class="never" data-hits="" data-linenumber="15">
 
 
 
6522          <code class="ruby">  end</code>
6523
 
6523        </li>
6524
 
 
6525        <li class="never" data-hits="" data-linenumber="16">
 
 
 
6528          <code class="ruby"></code>
6529
 
6529        </li>
6530
 
 
6531        <li class="covered" data-hits="1" data-linenumber="17">
 
6532          <span class="hits">1</span>
6533
 
 
6534          <code class="ruby">  context &#39;nil instrument&#39; do</code>
 
6535        </li>
6536
 
 
6537        <li class="covered" data-hits="1" data-linenumber="18">
 
6538          <span class="hits">1</span>
6539
 
 
6540          <code class="ruby">    it do</code>
6541
 
6541        </li>
6542
 
 
6543        <li class="covered" data-hits="2" data-linenumber="19">
 
6544          <span class="hits">2</span>
6545
 
 
6546          <code class="ruby">      expect { subject.load(instrument: Instrument.find_by_name(&#39;does not exist&#39;)) }.to \</code>
 
6547        </li>
6548
 
 
6549        <li class="never" data-hits="" data-linenumber="20">
 
 
 
6552          <code class="ruby">        raise_error(RuntimeError)</code>
6553
 
6553        </li>
6554
 
 
6555        <li class="never" data-hits="" data-linenumber="21">
 
 
 
6558          <code class="ruby">    end</code>
6559
 
6559        </li>
6560
 
 
6561        <li class="never" data-hits="" data-linenumber="22">
 
 
 
6564          <code class="ruby">  end</code>
6565
 
6565        </li>
6566
 
 
6567        <li class="never" data-hits="" data-linenumber="23">
 
 
 
6570          <code class="ruby">end</code>
6571
 
6571        </li>
6572
 
 
6573    </ol>
6574
 
6574  </pre>
6575
 
6575</div>
6576
 
 
 
6578        <div class="source_table" id="39142caad539feaf2dde7249c1aa38872d156c40">
 
6579  <div class="header">
 
6580    <h3>spec/instrument_spec.rb</h3>
6581
 
6581    <h4><span class="green">100.0 %</span> covered</h4>
 
6582    <div>
 
6583      <b>48</b> relevant lines. 
6584
 
6584      <span class="green"><b>48</b> lines covered</span> and
 
6585      <span class="red"><b>0</b> lines missed.</span>
 
6586    </div>
6587
 
6587  </div>
6588
 
 
6589  <pre>
 
6590    <ol>
 
 
6592        <li class="never" data-hits="" data-linenumber="1">
 
 
 
6595          <code class="ruby"># frozen_string_literal: true</code>
 
6596        </li>
6597
 
 
6598        <li class="never" data-hits="" data-linenumber="2">
 
 
 
6601          <code class="ruby"></code>
6602
 
6602        </li>
6603
 
 
6604        <li class="covered" data-hits="1" data-linenumber="3">
 
6605          <span class="hits">1</span>
6606
 
 
6607          <code class="ruby">RSpec.describe Instrument, type: :model do</code>
6608
 
6608        </li>
6609
 
 
6610        <li class="covered" data-hits="8" data-linenumber="4">
 
6611          <span class="hits">8</span>
6612
 
 
6613          <code class="ruby">  subject { described_class.find_or_create_by! name: AppConstants::TEST_INSTRUMENT }</code>
6614
 
6614        </li>
6615
 
 
6616        <li class="never" data-hits="" data-linenumber="5">
 
 
 
6619          <code class="ruby"></code>
6620
 
6620        </li>
6621
 
 
6622        <li class="covered" data-hits="1" data-linenumber="6">
 
6623          <span class="hits">1</span>
6624
 
 
6625          <code class="ruby">  describe &#39;test instrument #items&#39; do</code>
 
6626        </li>
6627
 
 
6628        <li class="covered" data-hits="1" data-linenumber="7">
 
6629          <span class="hits">1</span>
6630
 
 
6631          <code class="ruby">    it &#39;is not empty&#39; do</code>
 
6632        </li>
6633
 
 
6634        <li class="covered" data-hits="1" data-linenumber="8">
 
6635          <span class="hits">1</span>
6636
 
 
6637          <code class="ruby">      expect(subject.items).not_to be_empty</code>
6638
 
6638        </li>
6639
 
 
6640        <li class="never" data-hits="" data-linenumber="9">
 
 
 
6643          <code class="ruby">    end</code>
6644
 
6644        </li>
6645
 
 
6646        <li class="never" data-hits="" data-linenumber="10">
 
 
 
6649          <code class="ruby"></code>
6650
 
6650        </li>
6651
 
 
6652        <li class="covered" data-hits="1" data-linenumber="11">
 
6653          <span class="hits">1</span>
6654
 
 
6655          <code class="ruby">    it &#39;has 20 items&#39; do</code>
 
6656        </li>
6657
 
 
6658        <li class="covered" data-hits="1" data-linenumber="12">
 
6659          <span class="hits">1</span>
6660
 
 
6661          <code class="ruby">      expect(subject.items.count).to eq(20)</code>
6662
 
6662        </li>
6663
 
 
6664        <li class="never" data-hits="" data-linenumber="13">
 
 
 
6667          <code class="ruby">    end</code>
6668
 
6668        </li>
6669
 
 
6670        <li class="never" data-hits="" data-linenumber="14">
 
 
 
6673          <code class="ruby">  end</code>
6674
 
6674        </li>
6675
 
 
6676        <li class="never" data-hits="" data-linenumber="15">
 
 
 
6679          <code class="ruby"></code>
6680
 
6680        </li>
6681
 
 
6682        <li class="covered" data-hits="1" data-linenumber="16">
 
6683          <span class="hits">1</span>
6684
 
 
6685          <code class="ruby">  describe &#39;#items&#39; do</code>
 
6686        </li>
6687
 
 
6688        <li class="covered" data-hits="1" data-linenumber="17">
 
6689          <span class="hits">1</span>
6690
 
 
6691          <code class="ruby">    context &#39;has no items&#39; do </code>
 
6692        </li>
6693
 
 
6694        <li class="covered" data-hits="1" data-linenumber="18">
 
6695          <span class="hits">1</span>
6696
 
 
6697          <code class="ruby">      it do</code>
6698
 
6698        </li>
6699
 
 
6700        <li class="covered" data-hits="1" data-linenumber="19">
 
6701          <span class="hits">1</span>
6702
 
 
6703          <code class="ruby">        ins2 = described_class.find_or_create_by! name: &#39;Instrument 2&#39;</code>
 
6704        </li>
6705
 
 
6706        <li class="covered" data-hits="1" data-linenumber="20">
 
6707          <span class="hits">1</span>
6708
 
 
6709          <code class="ruby">        expect(ins2.items.count).to eq 0 </code>
6710
 
6710        </li>
6711
 
 
6712        <li class="never" data-hits="" data-linenumber="21">
 
 
 
6715          <code class="ruby">      end</code>
6716
 
6716        </li>
6717
 
 
6718        <li class="never" data-hits="" data-linenumber="22">
 
 
 
6721          <code class="ruby">    end</code>
6722
 
6722        </li>
6723
 
 
6724        <li class="never" data-hits="" data-linenumber="23">
 
 
 
6727          <code class="ruby">  end</code>
6728
 
6728        </li>
6729
 
 
6730        <li class="never" data-hits="" data-linenumber="24">
 
 
 
6733          <code class="ruby"></code>
6734
 
6734        </li>
6735
 
 
6736        <li class="covered" data-hits="1" data-linenumber="25">
 
6737          <span class="hits">1</span>
6738
 
 
6739          <code class="ruby">  describe &#39;.list_tests&#39; do</code>
 
6740        </li>
6741
 
 
6742        <li class="covered" data-hits="1" data-linenumber="26">
 
6743          <span class="hits">1</span>
6744
 
 
6745          <code class="ruby">    it &#39;should return a list of instrument names&#39; do</code>
 
6746        </li>
6747
 
 
6748        <li class="covered" data-hits="1" data-linenumber="27">
 
6749          <span class="hits">1</span>
6750
 
 
6751          <code class="ruby">      expect(described_class.list_tests).to include(AppConstants::TEST_INSTRUMENT)</code>
6752
 
6752        </li>
6753
 
 
6754        <li class="never" data-hits="" data-linenumber="28">
 
 
 
6757          <code class="ruby">    end</code>
6758
 
6758        </li>
6759
 
 
6760        <li class="never" data-hits="" data-linenumber="29">
 
 
 
6763          <code class="ruby">  end</code>
6764
 
6764        </li>
6765
 
 
6766        <li class="never" data-hits="" data-linenumber="30">
 
 
 
6769          <code class="ruby"></code>
6770
 
6770        </li>
6771
 
 
6772        <li class="covered" data-hits="1" data-linenumber="31">
 
6773          <span class="hits">1</span>
6774
 
 
6775          <code class="ruby">  describe &#39;#save!&#39; do</code>
 
6776        </li>
6777
 
 
6778        <li class="covered" data-hits="1" data-linenumber="32">
 
6779          <span class="hits">1</span>
6780
 
 
6781          <code class="ruby">    it &#39;without a name&#39; do</code>
 
6782        </li>
6783
 
 
6784        <li class="covered" data-hits="1" data-linenumber="33">
 
6785          <span class="hits">1</span>
6786
 
 
6787          <code class="ruby">      ins = described_class.new</code>
6788
 
6788        </li>
6789
 
 
6790        <li class="covered" data-hits="2" data-linenumber="34">
 
6791          <span class="hits">2</span>
6792
 
 
6793          <code class="ruby">      expect { ins.save! }.to raise_error ActiveRecord::RecordInvalid</code>
6794
 
6794        </li>
6795
 
 
6796        <li class="never" data-hits="" data-linenumber="35">
 
 
 
6799          <code class="ruby">    end</code>
6800
 
6800        </li>
6801
 
 
6802        <li class="never" data-hits="" data-linenumber="36">
 
 
 
6805          <code class="ruby"></code>
6806
 
6806        </li>
6807
 
 
6808        <li class="covered" data-hits="1" data-linenumber="37">
 
6809          <span class="hits">1</span>
6810
 
 
6811          <code class="ruby">    it &#39;with 1 character name&#39; do</code>
 
6812        </li>
6813
 
 
6814        <li class="covered" data-hits="1" data-linenumber="38">
 
6815          <span class="hits">1</span>
6816
 
 
6817          <code class="ruby">      ins = described_class.new name: &#39;a&#39;</code>
 
6818        </li>
6819
 
 
6820        <li class="covered" data-hits="2" data-linenumber="39">
 
6821          <span class="hits">2</span>
6822
 
 
6823          <code class="ruby">      expect { ins.save! }.to raise_error ActiveRecord::RecordInvalid</code>
6824
 
6824        </li>
6825
 
 
6826        <li class="never" data-hits="" data-linenumber="40">
 
 
 
6829          <code class="ruby">    end</code>
6830
 
6830        </li>
6831
 
 
6832        <li class="never" data-hits="" data-linenumber="41">
 
 
 
6835          <code class="ruby"></code>
6836
 
6836        </li>
6837
 
 
6838        <li class="covered" data-hits="1" data-linenumber="42">
 
6839          <span class="hits">1</span>
6840
 
 
6841          <code class="ruby">    it &#39;with duplicate name&#39; do</code>
 
6842        </li>
6843
 
 
6844        <li class="covered" data-hits="1" data-linenumber="43">
 
6845          <span class="hits">1</span>
6846
 
 
6847          <code class="ruby">      ins = described_class.new name: AppConstants::TEST_INSTRUMENT</code>
6848
 
6848        </li>
6849
 
 
6850        <li class="covered" data-hits="2" data-linenumber="44">
 
6851          <span class="hits">2</span>
6852
 
 
6853          <code class="ruby">      expect { ins.save! }.to raise_error ActiveRecord::RecordInvalid</code>
6854
 
6854        </li>
6855
 
 
6856        <li class="never" data-hits="" data-linenumber="45">
 
 
 
6859          <code class="ruby">    end</code>
6860
 
6860        </li>
6861
 
 
6862        <li class="never" data-hits="" data-linenumber="46">
 
 
 
6865          <code class="ruby">  end</code>
6866
 
6866        </li>
6867
 
 
6868        <li class="never" data-hits="" data-linenumber="47">
 
 
 
6871          <code class="ruby"></code>
6872
 
6872        </li>
6873
 
 
6874        <li class="covered" data-hits="1" data-linenumber="48">
 
6875          <span class="hits">1</span>
6876
 
 
6877          <code class="ruby">  describe &#39;#to_s&#39; do</code>
 
6878        </li>
6879
 
 
6880        <li class="covered" data-hits="2" data-linenumber="49">
 
6881          <span class="hits">2</span>
6882
 
 
6883          <code class="ruby">    it { expect(subject.to_s).to eq(AppConstants::TEST_INSTRUMENT) }</code>
6884
 
6884        </li>
6885
 
 
6886        <li class="never" data-hits="" data-linenumber="50">
 
 
 
6889          <code class="ruby">  end</code>
6890
 
6890        </li>
6891
 
 
6892        <li class="never" data-hits="" data-linenumber="51">
 
 
 
6895          <code class="ruby"></code>
6896
 
6896        </li>
6897
 
 
6898        <li class="covered" data-hits="1" data-linenumber="52">
 
6899          <span class="hits">1</span>
6900
 
 
6901          <code class="ruby">  describe &#39;#version&#39; do</code>
 
6902        </li>
6903
 
 
6904        <li class="covered" data-hits="2" data-linenumber="53">
 
6905          <span class="hits">2</span>
6906
 
 
6907          <code class="ruby">    it { expect(subject.version_number).to eq(&#39;1.0&#39;) }</code>
 
6908        </li>
6909
 
 
6910        <li class="never" data-hits="" data-linenumber="54">
 
 
 
6913          <code class="ruby">  end</code>
6914
 
6914        </li>
6915
 
 
6916        <li class="never" data-hits="" data-linenumber="55">
 
 
 
6919          <code class="ruby"></code>
6920
 
6920        </li>
6921
 
 
6922        <li class="covered" data-hits="1" data-linenumber="56">
 
6923          <span class="hits">1</span>
6924
 
 
6925          <code class="ruby">  describe &#39;#tags&#39; do</code>
 
6926        </li>
6927
 
 
6928        <li class="covered" data-hits="1" data-linenumber="57">
 
6929          <span class="hits">1</span>
6930
 
 
6931          <code class="ruby">    it do</code>
6932
 
6932        </li>
6933
 
 
6934        <li class="covered" data-hits="1" data-linenumber="58">
 
6935          <span class="hits">1</span>
6936
 
 
6937          <code class="ruby">      subject.tags = %w[Depression Anxiety] </code>
6938
 
6938        </li>
6939
 
 
6940        <li class="covered" data-hits="1" data-linenumber="59">
 
6941          <span class="hits">1</span>
6942
 
 
6943          <code class="ruby">      subject.tags -= %w[Depression]</code>
6944
 
6944        </li>
6945
 
 
6946        <li class="covered" data-hits="1" data-linenumber="60">
 
6947          <span class="hits">1</span>
6948
 
 
6949          <code class="ruby">      subject.tags += %w[Schizophrenia]</code>
6950
 
6950        </li>
6951
 
 
6952        <li class="covered" data-hits="1" data-linenumber="61">
 
6953          <span class="hits">1</span>
6954
 
 
6955          <code class="ruby">      expect(subject.tags).to eq %w[Anxiety Schizophrenia] </code>
6956
 
6956        </li>
6957
 
 
6958        <li class="never" data-hits="" data-linenumber="62">
 
 
 
6961          <code class="ruby">    end</code>
6962
 
6962        </li>
6963
 
 
6964        <li class="never" data-hits="" data-linenumber="63">
 
 
 
6967          <code class="ruby">  end</code>
6968
 
6968        </li>
6969
 
 
6970        <li class="never" data-hits="" data-linenumber="64">
 
 
 
6973          <code class="ruby"></code>
6974
 
6974        </li>
6975
 
 
6976        <li class="covered" data-hits="1" data-linenumber="65">
 
6977          <span class="hits">1</span>
6978
 
 
6979          <code class="ruby">  describe &#39;#with_any_tags&#39; do</code>
 
6980        </li>
6981
 
 
6982        <li class="covered" data-hits="1" data-linenumber="66">
 
6983          <span class="hits">1</span>
6984
 
 
6985          <code class="ruby">    context &#39;present&#39; do</code>
 
6986        </li>
6987
 
 
6988        <li class="covered" data-hits="1" data-linenumber="67">
 
6989          <span class="hits">1</span>
6990
 
 
6991          <code class="ruby">      it do</code>
6992
 
6992        </li>
6993
 
 
6994        <li class="covered" data-hits="1" data-linenumber="68">
 
6995          <span class="hits">1</span>
6996
 
 
6997          <code class="ruby">        subject.tags = %w[Depression Anxiety] </code>
6998
 
6998        </li>
6999
 
 
7000        <li class="covered" data-hits="1" data-linenumber="69">
 
7001          <span class="hits">1</span>
7002
 
 
7003          <code class="ruby">        subject.tags -= %w[Depression]</code>
7004
 
7004        </li>
7005
 
 
7006        <li class="covered" data-hits="1" data-linenumber="70">
 
7007          <span class="hits">1</span>
7008
 
 
7009          <code class="ruby">        subject.tags += %w[Schizophrenia]</code>
7010
 
7010        </li>
7011
 
 
7012        <li class="covered" data-hits="1" data-linenumber="71">
 
7013          <span class="hits">1</span>
7014
 
 
7015          <code class="ruby">        subject.save!</code>
7016
 
7016        </li>
7017
 
 
7018        <li class="covered" data-hits="1" data-linenumber="72">
 
7019          <span class="hits">1</span>
7020
 
 
7021          <code class="ruby">        expect(described_class.with_any_tags(&#39;Anxiety&#39;)&amp;.first&amp;.name).to eq subject.name</code>
 
7022        </li>
7023
 
 
7024        <li class="never" data-hits="" data-linenumber="73">
 
 
 
7027          <code class="ruby">      end</code>
7028
 
7028        </li>
7029
 
 
7030        <li class="never" data-hits="" data-linenumber="74">
 
 
 
7033          <code class="ruby">    end</code>
7034
 
7034        </li>
7035
 
 
7036        <li class="never" data-hits="" data-linenumber="75">
 
 
 
7039          <code class="ruby"></code>
7040
 
7040        </li>
7041
 
 
7042        <li class="covered" data-hits="1" data-linenumber="76">
 
7043          <span class="hits">1</span>
7044
 
 
7045          <code class="ruby">    context &#39;absent&#39; do</code>
 
7046        </li>
7047
 
 
7048        <li class="covered" data-hits="1" data-linenumber="77">
 
7049          <span class="hits">1</span>
7050
 
 
7051          <code class="ruby">      it do</code>
7052
 
7052        </li>
7053
 
 
7054        <li class="covered" data-hits="1" data-linenumber="78">
 
7055          <span class="hits">1</span>
7056
 
 
7057          <code class="ruby">        expect(described_class.with_any_tags(&#39;Depression&#39;)&amp;.first).to be_nil</code>
 
7058        </li>
7059
 
 
7060        <li class="never" data-hits="" data-linenumber="79">
 
 
 
7063          <code class="ruby">      end</code>
7064
 
7064        </li>
7065
 
 
7066        <li class="never" data-hits="" data-linenumber="80">
 
 
 
7069          <code class="ruby">    end</code>
7070
 
7070        </li>
7071
 
 
7072        <li class="never" data-hits="" data-linenumber="81">
 
 
 
7075          <code class="ruby">  end</code>
7076
 
7076        </li>
7077
 
 
7078        <li class="never" data-hits="" data-linenumber="82">
 
 
 
7081          <code class="ruby"></code>
7082
 
7082        </li>
7083
 
 
7084        <li class="covered" data-hits="1" data-linenumber="83">
 
7085          <span class="hits">1</span>
7086
 
 
7087          <code class="ruby">  describe &#39;#created_at today&#39; do</code>
 
7088        </li>
7089
 
 
7090        <li class="never" data-hits="" data-linenumber="84">
 
 
 
7093          <code class="ruby">    # expect record to be created within the last 5 minutes to check timestamp works</code>
 
7094        </li>
7095
 
 
7096        <li class="covered" data-hits="2" data-linenumber="85">
 
7097          <span class="hits">2</span>
7098
 
 
7099          <code class="ruby">    it { expect(Time.now - subject.created_at).to be &lt; 300 }</code>
7100
 
7100        </li>
7101
 
 
7102        <li class="never" data-hits="" data-linenumber="86">
 
 
 
7105          <code class="ruby">  end</code>
7106
 
7106        </li>
7107
 
 
7108        <li class="never" data-hits="" data-linenumber="87">
 
 
 
7111          <code class="ruby">end</code>
7112
 
7112        </li>
7113
 
 
7114    </ol>
7115
 
7115  </pre>
7116
 
7116</div>
7117
 
 
 
7119        <div class="source_table" id="6bc4ba0f242b64d1ebad1e339712c1d6d2130689">
 
7120  <div class="header">
 
7121    <h3>spec/item_spec.rb</h3>
7122
 
7122    <h4><span class="green">100.0 %</span> covered</h4>
 
7123    <div>
 
7124      <b>22</b> relevant lines. 
7125
 
7125      <span class="green"><b>22</b> lines covered</span> and
 
7126      <span class="red"><b>0</b> lines missed.</span>
 
7127    </div>
7128
 
7128  </div>
7129
 
 
7130  <pre>
 
7131    <ol>
 
 
7133        <li class="never" data-hits="" data-linenumber="1">
 
 
 
7136          <code class="ruby"># frozen_string_literal: true</code>
 
7137        </li>
7138
 
 
7139        <li class="never" data-hits="" data-linenumber="2">
 
 
 
7142          <code class="ruby"></code>
7143
 
7143        </li>
7144
 
 
7145        <li class="covered" data-hits="1" data-linenumber="3">
 
7146          <span class="hits">1</span>
7147
 
 
7148          <code class="ruby">RSpec.describe Item, type: :model do</code>
7149
 
7149        </li>
7150
 
 
7151        <li class="covered" data-hits="6" data-linenumber="4">
 
7152          <span class="hits">6</span>
7153
 
 
7154          <code class="ruby">  subject { described_class.find_or_create_by! name: &#39;Appetite1&#39; }</code>
 
7155        </li>
7156
 
 
7157        <li class="covered" data-hits="7" data-linenumber="5">
 
7158          <span class="hits">7</span>
7159
 
 
7160          <code class="ruby">  let!(:instrument) { Instrument.find_or_create_by! name: AppConstants::TEST_INSTRUMENT }</code>
7161
 
7161        </li>
7162
 
 
7163        <li class="never" data-hits="" data-linenumber="6">
 
 
 
7166          <code class="ruby"></code>
7167
 
7167        </li>
7168
 
 
7169        <li class="covered" data-hits="1" data-linenumber="7">
 
7170          <span class="hits">1</span>
7171
 
 
7172          <code class="ruby">  describe &#39;test item #choices&#39; do</code>
 
7173        </li>
7174
 
 
7175        <li class="covered" data-hits="1" data-linenumber="8">
 
7176          <span class="hits">1</span>
7177
 
 
7178          <code class="ruby">    it &#39;has 5 choices&#39; do</code>
 
7179        </li>
7180
 
 
7181        <li class="covered" data-hits="1" data-linenumber="9">
 
7182          <span class="hits">1</span>
7183
 
 
7184          <code class="ruby">      expect(subject.choices.count).to eq(5)</code>
7185
 
7185        </li>
7186
 
 
7187        <li class="never" data-hits="" data-linenumber="10">
 
 
 
7190          <code class="ruby">    end</code>
7191
 
7191        </li>
7192
 
 
7193        <li class="never" data-hits="" data-linenumber="11">
 
 
 
7196          <code class="ruby">  end</code>
7197
 
7197        </li>
7198
 
 
7199        <li class="never" data-hits="" data-linenumber="12">
 
 
 
7202          <code class="ruby"></code>
7203
 
7203        </li>
7204
 
 
7205        <li class="covered" data-hits="1" data-linenumber="13">
 
7206          <span class="hits">1</span>
7207
 
 
7208          <code class="ruby">  describe &#39;test item #find_choice_by_value&#39; do</code>
 
7209        </li>
7210
 
 
7211        <li class="covered" data-hits="1" data-linenumber="14">
 
7212          <span class="hits">1</span>
7213
 
 
7214          <code class="ruby">    it &#39;has choice eq 0&#39; do</code>
 
7215        </li>
7216
 
 
7217        <li class="covered" data-hits="1" data-linenumber="15">
 
7218          <span class="hits">1</span>
7219
 
 
7220          <code class="ruby">      choice = subject.find_choice_by_value(&#39;0&#39;)</code>
 
7221        </li>
7222
 
 
7223        <li class="covered" data-hits="1" data-linenumber="16">
 
7224          <span class="hits">1</span>
7225
 
 
7226          <code class="ruby">      expect(choice.value).to eq(&#39;0&#39;)</code>
 
7227        </li>
7228
 
 
7229        <li class="never" data-hits="" data-linenumber="17">
 
 
 
7232          <code class="ruby">    end</code>
7233
 
7233        </li>
7234
 
 
7235        <li class="never" data-hits="" data-linenumber="18">
 
 
 
7238          <code class="ruby">  end</code>
7239
 
7239        </li>
7240
 
 
7241        <li class="never" data-hits="" data-linenumber="19">
 
 
 
7244          <code class="ruby"></code>
7245
 
7245        </li>
7246
 
 
7247        <li class="covered" data-hits="1" data-linenumber="20">
 
7248          <span class="hits">1</span>
7249
 
 
7250          <code class="ruby">  describe &#39;#to_s&#39; do</code>
 
7251        </li>
7252
 
 
7253        <li class="covered" data-hits="1" data-linenumber="21">
 
7254          <span class="hits">1</span>
7255
 
 
7256          <code class="ruby">    it do</code>
7257
 
7257        </li>
7258
 
 
7259        <li class="covered" data-hits="1" data-linenumber="22">
 
7260          <span class="hits">1</span>
7261
 
 
7262          <code class="ruby">      item = described_class.new(name: &#39;Time&#39;)</code>
 
7263        </li>
7264
 
 
7265        <li class="covered" data-hits="1" data-linenumber="23">
 
7266          <span class="hits">1</span>
7267
 
 
7268          <code class="ruby">      expect(item.to_s).to eq(item.name) </code>
7269
 
7269        </li>
7270
 
 
7271        <li class="never" data-hits="" data-linenumber="24">
 
 
 
7274          <code class="ruby">    end</code>
7275
 
7275        </li>
7276
 
 
7277        <li class="never" data-hits="" data-linenumber="25">
 
 
 
7280          <code class="ruby">  end</code>
7281
 
7281        </li>
7282
 
 
7283        <li class="never" data-hits="" data-linenumber="26">
 
 
 
7286          <code class="ruby"></code>
7287
 
7287        </li>
7288
 
 
7289        <li class="covered" data-hits="1" data-linenumber="27">
 
7290          <span class="hits">1</span>
7291
 
 
7292          <code class="ruby">  describe &#39;#find_by_name&#39; do</code>
 
7293        </li>
7294
 
 
7295        <li class="covered" data-hits="1" data-linenumber="28">
 
7296          <span class="hits">1</span>
7297
 
 
7298          <code class="ruby">    it do</code>
7299
 
7299        </li>
7300
 
 
7301        <li class="covered" data-hits="1" data-linenumber="29">
 
7302          <span class="hits">1</span>
7303
 
 
7304          <code class="ruby">      expect(subject.name).to eq(&#39;Appetite1&#39;)</code>
 
7305        </li>
7306
 
 
7307        <li class="never" data-hits="" data-linenumber="30">
 
 
 
7310          <code class="ruby">    end</code>
7311
 
7311        </li>
7312
 
 
7313        <li class="never" data-hits="" data-linenumber="31">
 
 
 
7316          <code class="ruby">  end</code>
7317
 
7317        </li>
7318
 
 
7319        <li class="never" data-hits="" data-linenumber="32">
 
 
 
7322          <code class="ruby"></code>
7323
 
7323        </li>
7324
 
 
7325        <li class="covered" data-hits="1" data-linenumber="33">
 
7326          <span class="hits">1</span>
7327
 
 
7328          <code class="ruby">  describe &#39;#instrument&#39; do</code>
 
7329        </li>
7330
 
 
7331        <li class="covered" data-hits="1" data-linenumber="34">
 
7332          <span class="hits">1</span>
7333
 
 
7334          <code class="ruby">    it do</code>
7335
 
7335        </li>
7336
 
 
7337        <li class="covered" data-hits="1" data-linenumber="35">
 
7338          <span class="hits">1</span>
7339
 
 
7340          <code class="ruby">      expect(subject.instrument).to eq(instrument)</code>
7341
 
7341        </li>
7342
 
 
7343        <li class="never" data-hits="" data-linenumber="36">
 
 
 
7346          <code class="ruby">    end</code>
7347
 
7347        </li>
7348
 
 
7349        <li class="never" data-hits="" data-linenumber="37">
 
 
 
7352          <code class="ruby">  end</code>
7353
 
7353        </li>
7354
 
 
7355        <li class="never" data-hits="" data-linenumber="38">
 
 
 
7358          <code class="ruby">  </code>
7359
 
7359        </li>
7360
 
 
7361        <li class="covered" data-hits="1" data-linenumber="39">
 
7362          <span class="hits">1</span>
7363
 
 
7364          <code class="ruby">  describe &#39;#created_at today&#39; do</code>
 
7365        </li>
7366
 
 
7367        <li class="never" data-hits="" data-linenumber="40">
 
 
 
7370          <code class="ruby">    # expect record to be created within the last 5 minutes to check timestamp works</code>
 
7371        </li>
7372
 
 
7373        <li class="covered" data-hits="2" data-linenumber="41">
 
7374          <span class="hits">2</span>
7375
 
 
7376          <code class="ruby">    it { expect(Time.now - subject.created_at).to be &lt; 300 }</code>
7377
 
7377        </li>
7378
 
 
7379        <li class="never" data-hits="" data-linenumber="42">
 
 
 
7382          <code class="ruby">  end</code>
7383
 
7383        </li>
7384
 
 
7385        <li class="never" data-hits="" data-linenumber="43">
 
 
 
7388          <code class="ruby">end</code>
7389
 
7389        </li>
7390
 
 
7391    </ol>
7392
 
7392  </pre>
7393
 
7393</div>
7394
 
 
 
7396        <div class="source_table" id="afad5ef51e7836084a99570bc945637d98d3983c">
 
7397  <div class="header">
 
7398    <h3>spec/project_spec.rb</h3>
7399
 
7399    <h4><span class="green">100.0 %</span> covered</h4>
 
7400    <div>
 
7401      <b>24</b> relevant lines. 
7402
 
7402      <span class="green"><b>24</b> lines covered</span> and
 
7403      <span class="red"><b>0</b> lines missed.</span>
 
7404    </div>
7405
 
7405  </div>
7406
 
 
7407  <pre>
 
7408    <ol>
 
 
7410        <li class="never" data-hits="" data-linenumber="1">
 
 
 
7413          <code class="ruby"># frozen_string_literal: true</code>
 
7414        </li>
7415
 
 
7416        <li class="never" data-hits="" data-linenumber="2">
 
 
 
7419          <code class="ruby"></code>
7420
 
7420        </li>
7421
 
 
7422        <li class="covered" data-hits="1" data-linenumber="3">
 
7423          <span class="hits">1</span>
7424
 
 
7425          <code class="ruby">RSpec.describe Project, type: :model do</code>
7426
 
7426        </li>
7427
 
 
7428        <li class="covered" data-hits="3" data-linenumber="4">
 
7429          <span class="hits">3</span>
7430
 
 
7431          <code class="ruby">  subject { TestFactory.test_project }</code>
7432
 
7432        </li>
7433
 
 
7434        <li class="covered" data-hits="8" data-linenumber="5">
 
7435          <span class="hits">8</span>
7436
 
 
7437          <code class="ruby">  let!(:folder1) { TestFactory.test_folder }</code>
7438
 
7438        </li>
7439
 
 
7440        <li class="never" data-hits="" data-linenumber="6">
 
 
 
7443          <code class="ruby"></code>
7444
 
7444        </li>
7445
 
 
7446        <li class="covered" data-hits="1" data-linenumber="7">
 
7447          <span class="hits">1</span>
7448
 
 
7449          <code class="ruby">  describe &#39;.create!&#39; do</code>
 
7450        </li>
7451
 
 
7452        <li class="covered" data-hits="1" data-linenumber="8">
 
7453          <span class="hits">1</span>
7454
 
 
7455          <code class="ruby">    context &#39;without name or title&#39; do</code>
 
7456        </li>
7457
 
 
7458        <li class="covered" data-hits="3" data-linenumber="9">
 
7459          <span class="hits">3</span>
7460
 
 
7461          <code class="ruby">      it { expect { described_class.create! }.to raise_error ActiveRecord::RecordInvalid }</code>
7462
 
7462        </li>
7463
 
 
7464        <li class="never" data-hits="" data-linenumber="10">
 
 
 
7467          <code class="ruby">    end  </code>
7468
 
7468        </li>
7469
 
 
7470        <li class="never" data-hits="" data-linenumber="11">
 
 
 
7473          <code class="ruby"></code>
7474
 
7474        </li>
7475
 
 
7476        <li class="covered" data-hits="1" data-linenumber="12">
 
7477          <span class="hits">1</span>
7478
 
 
7479          <code class="ruby">    context &#39;1 character name and title&#39; do</code>
 
7480        </li>
7481
 
 
7482        <li class="covered" data-hits="3" data-linenumber="13">
 
7483          <span class="hits">3</span>
7484
 
 
7485          <code class="ruby">      it { expect { described_class.create! name: &#39;a&#39;, title: &#39;title&#39; }.to raise_error ActiveRecord::RecordInvalid }</code>
 
7486        </li>
7487
 
 
7488        <li class="never" data-hits="" data-linenumber="14">
 
 
 
7491          <code class="ruby">    end</code>
7492
 
7492        </li>
7493
 
 
7494        <li class="never" data-hits="" data-linenumber="15">
 
 
 
7497          <code class="ruby">    </code>
7498
 
7498        </li>
7499
 
 
7500        <li class="covered" data-hits="1" data-linenumber="16">
 
7501          <span class="hits">1</span>
7502
 
 
7503          <code class="ruby">    context &#39;2+ character name and title&#39; do</code>
 
7504        </li>
7505
 
 
7506        <li class="covered" data-hits="3" data-linenumber="17">
 
7507          <span class="hits">3</span>
7508
 
 
7509          <code class="ruby">      it { expect { described_class.find_or_create_by! name: &#39;as&#39;, title: &#39;title&#39; }.to_not raise_error }</code>
 
7510        </li>
7511
 
 
7512        <li class="never" data-hits="" data-linenumber="18">
 
 
 
7515          <code class="ruby">    end</code>
7516
 
7516        </li>
7517
 
 
7518        <li class="never" data-hits="" data-linenumber="19">
 
 
 
7521          <code class="ruby"></code>
7522
 
7522        </li>
7523
 
 
7524        <li class="covered" data-hits="1" data-linenumber="20">
 
7525          <span class="hits">1</span>
7526
 
 
7527          <code class="ruby">    context &#39;unique name&#39; do</code>
 
7528        </li>
7529
 
 
7530        <li class="covered" data-hits="1" data-linenumber="21">
 
7531          <span class="hits">1</span>
7532
 
 
7533          <code class="ruby">      it do</code>
7534
 
7534        </li>
7535
 
 
7536        <li class="covered" data-hits="1" data-linenumber="22">
 
7537          <span class="hits">1</span>
7538
 
 
7539          <code class="ruby">        rs = described_class.create! name: &#39;a12&#39;, title: &#39;irrelevant&#39;</code>
 
7540        </li>
7541
 
 
7542        <li class="covered" data-hits="2" data-linenumber="23">
 
7543          <span class="hits">2</span>
7544
 
 
7545          <code class="ruby">        expect { described_class.create! name: &#39;a12&#39;, title: &#39;irrelevant&#39; }.to raise_error ActiveRecord::RecordInvalid</code>
 
7546        </li>
7547
 
 
7548        <li class="covered" data-hits="1" data-linenumber="24">
 
7549          <span class="hits">1</span>
7550
 
 
7551          <code class="ruby">        rs.destroy!</code>
7552
 
7552        </li>
7553
 
 
7554        <li class="never" data-hits="" data-linenumber="25">
 
 
 
7557          <code class="ruby">      end</code>
7558
 
7558        </li>
7559
 
 
7560        <li class="never" data-hits="" data-linenumber="26">
 
 
 
7563          <code class="ruby">    end</code>
7564
 
7564        </li>
7565
 
 
7566        <li class="never" data-hits="" data-linenumber="27">
 
 
 
7569          <code class="ruby">  end</code>
7570
 
7570        </li>
7571
 
 
7572        <li class="never" data-hits="" data-linenumber="28">
 
 
 
7575          <code class="ruby"></code>
7576
 
7576        </li>
7577
 
 
7578        <li class="covered" data-hits="1" data-linenumber="29">
 
7579          <span class="hits">1</span>
7580
 
 
7581          <code class="ruby">  describe &#39;active projects&#39; do</code>
 
7582        </li>
7583
 
 
7584        <li class="covered" data-hits="1" data-linenumber="30">
 
7585          <span class="hits">1</span>
7586
 
 
7587          <code class="ruby">    it do</code>
7588
 
7588        </li>
7589
 
 
7590        <li class="covered" data-hits="1" data-linenumber="31">
 
7591          <span class="hits">1</span>
7592
 
 
7593          <code class="ruby">      described_class.find_or_create_by! name: &#39;Test Project Active&#39;, title: &#39;title&#39;</code>
 
7594        </li>
7595
 
 
7596        <li class="covered" data-hits="1" data-linenumber="32">
 
7597          <span class="hits">1</span>
7598
 
 
7599          <code class="ruby">      described_class.find_or_create_by! name: &#39;Test Archived&#39;, archived: true, title: &#39;title&#39;</code>
 
7600        </li>
7601
 
 
7602        <li class="covered" data-hits="1" data-linenumber="33">
 
7603          <span class="hits">1</span>
7604
 
 
7605          <code class="ruby">      expect(described_class.list_active_projects).not_to include &#39;Archived &#39;</code>
 
7606        </li>
7607
 
 
7608        <li class="never" data-hits="" data-linenumber="34">
 
 
 
7611          <code class="ruby">    end </code>
7612
 
7612        </li>
7613
 
 
7614        <li class="never" data-hits="" data-linenumber="35">
 
 
 
7617          <code class="ruby">  end</code>
7618
 
7618        </li>
7619
 
 
7620        <li class="never" data-hits="" data-linenumber="36">
 
 
 
7623          <code class="ruby">  </code>
7624
 
7624        </li>
7625
 
 
7626        <li class="covered" data-hits="1" data-linenumber="37">
 
7627          <span class="hits">1</span>
7628
 
 
7629          <code class="ruby">  describe &#39;#to_s&#39; do</code>
 
7630        </li>
7631
 
 
7632        <li class="covered" data-hits="2" data-linenumber="38">
 
7633          <span class="hits">2</span>
7634
 
 
7635          <code class="ruby">    it { expect(subject.to_s).to eq AppConstants::TEST_PROJECT }</code>
7636
 
7636        </li>
7637
 
 
7638        <li class="never" data-hits="" data-linenumber="39">
 
 
 
7641          <code class="ruby">  end</code>
7642
 
7642        </li>
7643
 
 
7644        <li class="never" data-hits="" data-linenumber="40">
 
 
 
7647          <code class="ruby"></code>
7648
 
7648        </li>
7649
 
 
7650        <li class="covered" data-hits="1" data-linenumber="41">
 
7651          <span class="hits">1</span>
7652
 
 
7653          <code class="ruby">  describe &#39;#created_at today&#39; do</code>
 
7654        </li>
7655
 
 
7656        <li class="never" data-hits="" data-linenumber="42">
 
 
 
7659          <code class="ruby">    # expect record to be created within the last 5 minutes to check timestamp works</code>
 
7660        </li>
7661
 
 
7662        <li class="covered" data-hits="2" data-linenumber="43">
 
7663          <span class="hits">2</span>
7664
 
 
7665          <code class="ruby">    it { expect(Time.now - subject.created_at).to be &lt; 300 }</code>
7666
 
7666        </li>
7667
 
 
7668        <li class="never" data-hits="" data-linenumber="44">
 
 
 
7671          <code class="ruby">  end</code>
7672
 
7672        </li>
7673
 
 
7674        <li class="never" data-hits="" data-linenumber="45">
 
 
 
7677          <code class="ruby">end</code>
7678
 
7678        </li>
7679
 
 
7680    </ol>
7681
 
7681  </pre>
7682
 
7682</div>
7683
 
 
 
7685        <div class="source_table" id="e6cb8af650b3aa514d3720bd06c36b5be218afdc">
 
7686  <div class="header">
 
7687    <h3>spec/response_scale_spec.rb</h3>
7688
 
7688    <h4><span class="green">100.0 %</span> covered</h4>
 
7689    <div>
 
7690      <b>27</b> relevant lines. 
7691
 
7691      <span class="green"><b>27</b> lines covered</span> and
 
7692      <span class="red"><b>0</b> lines missed.</span>
 
7693    </div>
7694
 
7694  </div>
7695
 
 
7696  <pre>
 
7697    <ol>
 
 
7699        <li class="never" data-hits="" data-linenumber="1">
 
 
 
7702          <code class="ruby"># frozen_string_literal: true</code>
 
7703        </li>
7704
 
 
7705        <li class="never" data-hits="" data-linenumber="2">
 
 
 
7708          <code class="ruby"></code>
7709
 
7709        </li>
7710
 
 
7711        <li class="covered" data-hits="1" data-linenumber="3">
 
7712          <span class="hits">1</span>
7713
 
 
7714          <code class="ruby">RSpec.describe ResponseScale, type: :model do</code>
7715
 
7715        </li>
7716
 
 
7717        <li class="covered" data-hits="3" data-linenumber="4">
 
7718          <span class="hits">3</span>
7719
 
 
7720          <code class="ruby">  subject { TestFactory.test_response_scale }</code>
7721
 
7721        </li>
7722
 
 
7723        <li class="never" data-hits="" data-linenumber="5">
 
 
 
7726          <code class="ruby">  </code>
7727
 
7727        </li>
7728
 
 
7729        <li class="covered" data-hits="1" data-linenumber="6">
 
7730          <span class="hits">1</span>
7731
 
 
7732          <code class="ruby">  describe &#39;.create!&#39; do</code>
 
7733        </li>
7734
 
 
7735        <li class="covered" data-hits="1" data-linenumber="7">
 
7736          <span class="hits">1</span>
7737
 
 
7738          <code class="ruby">    context &#39;without a name&#39; do</code>
 
7739        </li>
7740
 
 
7741        <li class="covered" data-hits="3" data-linenumber="8">
 
7742          <span class="hits">3</span>
7743
 
 
7744          <code class="ruby">      it { expect { described_class.create! }.to raise_error ActiveRecord::RecordInvalid }</code>
7745
 
7745        </li>
7746
 
 
7747        <li class="never" data-hits="" data-linenumber="9">
 
 
 
7750          <code class="ruby">    end  </code>
7751
 
7751        </li>
7752
 
 
7753        <li class="never" data-hits="" data-linenumber="10">
 
 
 
7756          <code class="ruby"></code>
7757
 
7757        </li>
7758
 
 
7759        <li class="covered" data-hits="1" data-linenumber="11">
 
7760          <span class="hits">1</span>
7761
 
 
7762          <code class="ruby">    context &#39;1 character name&#39; do</code>
 
7763        </li>
7764
 
 
7765        <li class="covered" data-hits="3" data-linenumber="12">
 
7766          <span class="hits">3</span>
7767
 
 
7768          <code class="ruby">      it { expect { described_class.create! name: &#39;a&#39; }.to raise_error ActiveRecord::RecordInvalid }</code>
 
7769        </li>
7770
 
 
7771        <li class="never" data-hits="" data-linenumber="13">
 
 
 
7774          <code class="ruby">    end</code>
7775
 
7775        </li>
7776
 
 
7777        <li class="never" data-hits="" data-linenumber="14">
 
 
 
7780          <code class="ruby">    </code>
7781
 
7781        </li>
7782
 
 
7783        <li class="covered" data-hits="1" data-linenumber="15">
 
7784          <span class="hits">1</span>
7785
 
 
7786          <code class="ruby">    context &#39;2+ character name&#39; do</code>
 
7787        </li>
7788
 
 
7789        <li class="covered" data-hits="3" data-linenumber="16">
 
7790          <span class="hits">3</span>
7791
 
 
7792          <code class="ruby">      it { expect { described_class.find_or_create_by! name: &#39;as&#39; }.to_not raise_error }</code>
 
7793        </li>
7794
 
 
7795        <li class="never" data-hits="" data-linenumber="17">
 
 
 
7798          <code class="ruby">    end</code>
7799
 
7799        </li>
7800
 
 
7801        <li class="never" data-hits="" data-linenumber="18">
 
 
 
7804          <code class="ruby"></code>
7805
 
7805        </li>
7806
 
 
7807        <li class="covered" data-hits="1" data-linenumber="19">
 
7808          <span class="hits">1</span>
7809
 
 
7810          <code class="ruby">    context &#39;has unique name&#39; do</code>
 
7811        </li>
7812
 
 
7813        <li class="covered" data-hits="1" data-linenumber="20">
 
7814          <span class="hits">1</span>
7815
 
 
7816          <code class="ruby">      it do</code>
7817
 
7817        </li>
7818
 
 
7819        <li class="covered" data-hits="1" data-linenumber="21">
 
7820          <span class="hits">1</span>
7821
 
 
7822          <code class="ruby">        rs = described_class.create! name: &#39;a12&#39;</code>
 
7823        </li>
7824
 
 
7825        <li class="covered" data-hits="2" data-linenumber="22">
 
7826          <span class="hits">2</span>
7827
 
 
7828          <code class="ruby">        expect { described_class.create! name: &#39;a12&#39; }.to raise_error ActiveRecord::RecordInvalid</code>
 
7829        </li>
7830
 
 
7831        <li class="covered" data-hits="1" data-linenumber="23">
 
7832          <span class="hits">1</span>
7833
 
 
7834          <code class="ruby">        rs.destroy!</code>
7835
 
7835        </li>
7836
 
 
7837        <li class="never" data-hits="" data-linenumber="24">
 
 
 
7840          <code class="ruby">      end</code>
7841
 
7841        </li>
7842
 
 
7843        <li class="never" data-hits="" data-linenumber="25">
 
 
 
7846          <code class="ruby">    end</code>
7847
 
7847        </li>
7848
 
 
7849        <li class="never" data-hits="" data-linenumber="26">
 
 
 
7852          <code class="ruby">  end</code>
7853
 
7853        </li>
7854
 
 
7855        <li class="never" data-hits="" data-linenumber="27">
 
 
 
7858          <code class="ruby"></code>
7859
 
7859        </li>
7860
 
 
7861        <li class="covered" data-hits="1" data-linenumber="28">
 
7862          <span class="hits">1</span>
7863
 
 
7864          <code class="ruby">  describe &#39;#destroy!&#39; do</code>
 
7865        </li>
7866
 
 
7867        <li class="covered" data-hits="1" data-linenumber="29">
 
7868          <span class="hits">1</span>
7869
 
 
7870          <code class="ruby">    context &#39;destroys choices&#39; do </code>
 
7871        </li>
7872
 
 
7873        <li class="covered" data-hits="1" data-linenumber="30">
 
7874          <span class="hits">1</span>
7875
 
 
7876          <code class="ruby">      rsubject = described_class.create! name: &#39;a13&#39;</code>
 
7877        </li>
7878
 
 
7879        <li class="covered" data-hits="1" data-linenumber="31">
 
7880          <span class="hits">1</span>
7881
 
 
7882          <code class="ruby">      c = Choice.create! response_scale: rsubject, value: &#39;val&#39;, description: &#39;text&#39;</code>
 
7883        </li>
7884
 
 
7885        <li class="covered" data-hits="1" data-linenumber="32">
 
7886          <span class="hits">1</span>
7887
 
 
7888          <code class="ruby">      c2 = Choice.create! response_scale: rsubject, value: &#39;val2&#39;, description: &#39;text2&#39;</code>
 
7889        </li>
7890
 
 
7891        <li class="covered" data-hits="1" data-linenumber="33">
 
7892          <span class="hits">1</span>
7893
 
 
7894          <code class="ruby">      c3 = Choice.create! response_scale: rsubject, value: &#39;val3&#39;, description: &#39;text3&#39;</code>
 
7895        </li>
7896
 
 
7897        <li class="covered" data-hits="1" data-linenumber="34">
 
7898          <span class="hits">1</span>
7899
 
 
7900          <code class="ruby">      rsubject.choices.concat [c, c2, c3]   </code>
7901
 
7901        </li>
7902
 
 
7903        <li class="covered" data-hits="1" data-linenumber="35">
 
7904          <span class="hits">1</span>
7905
 
 
7906          <code class="ruby">      rsubject.destroy! </code>
7907
 
7907        </li>
7908
 
 
7909        <li class="covered" data-hits="2" data-linenumber="36">
 
7910          <span class="hits">2</span>
7911
 
 
7912          <code class="ruby">      it { expect(Choice.where(response_scale_id: rsubject.id, value: &#39;val&#39;, description: &#39;text&#39;).first).to be_nil } </code>
 
7913        </li>
7914
 
 
7915        <li class="never" data-hits="" data-linenumber="37">
 
 
 
7918          <code class="ruby">    end</code>
7919
 
7919        </li>
7920
 
 
7921        <li class="never" data-hits="" data-linenumber="38">
 
 
 
7924          <code class="ruby">  end</code>
7925
 
7925        </li>
7926
 
 
7927        <li class="never" data-hits="" data-linenumber="39">
 
 
 
7930          <code class="ruby">  </code>
7931
 
7931        </li>
7932
 
 
7933        <li class="covered" data-hits="1" data-linenumber="40">
 
7934          <span class="hits">1</span>
7935
 
 
7936          <code class="ruby">  describe &#39;#to_s&#39; do</code>
 
7937        </li>
7938
 
 
7939        <li class="covered" data-hits="2" data-linenumber="41">
 
7940          <span class="hits">2</span>
7941
 
 
7942          <code class="ruby">    it { expect(subject.to_s).to eq AppConstants::TEST_RESPONSE_SCALE }</code>
7943
 
7943        </li>
7944
 
 
7945        <li class="never" data-hits="" data-linenumber="42">
 
 
 
7948          <code class="ruby">  end</code>
7949
 
7949        </li>
7950
 
 
7951        <li class="never" data-hits="" data-linenumber="43">
 
 
 
7954          <code class="ruby">    </code>
7955
 
7955        </li>
7956
 
 
7957        <li class="covered" data-hits="1" data-linenumber="44">
 
7958          <span class="hits">1</span>
7959
 
 
7960          <code class="ruby">  describe &#39;#created_at today&#39; do</code>
 
7961        </li>
7962
 
 
7963        <li class="never" data-hits="" data-linenumber="45">
 
 
 
7966          <code class="ruby">    # expect record to be created within the last 5 minutes to check timestamp works</code>
 
7967        </li>
7968
 
 
7969        <li class="covered" data-hits="2" data-linenumber="46">
 
7970          <span class="hits">2</span>
7971
 
 
7972          <code class="ruby">    it { expect(Time.now - subject.created_at).to be &lt; 300 }</code>
7973
 
7973        </li>
7974
 
 
7975        <li class="never" data-hits="" data-linenumber="47">
 
 
 
7978          <code class="ruby">  end</code>
7979
 
7979        </li>
7980
 
 
7981        <li class="never" data-hits="" data-linenumber="48">
 
 
 
7984          <code class="ruby">end</code>
7985
 
7985        </li>
7986
 
 
7987    </ol>
7988
 
7988  </pre>
7989
 
7989</div>
7990
 
 
 
7992        <div class="source_table" id="8426929ebb0fb2da98fbfe17296e05fee1078c81">
 
7993  <div class="header">
 
7994    <h3>spec/response_spec.rb</h3>
7995
 
7995    <h4><span class="green">100.0 %</span> covered</h4>
 
7996    <div>
 
7997      <b>36</b> relevant lines. 
7998
 
7998      <span class="green"><b>36</b> lines covered</span> and
 
7999      <span class="red"><b>0</b> lines missed.</span>
 
8000    </div>
8001
 
8001  </div>
8002
 
 
8003  <pre>
 
8004    <ol>
 
 
8006        <li class="never" data-hits="" data-linenumber="1">
 
 
 
8009          <code class="ruby"># frozen_string_literal: true</code>
 
8010        </li>
8011
 
 
8012        <li class="never" data-hits="" data-linenumber="2">
 
 
 
8015          <code class="ruby"></code>
8016
 
8016        </li>
8017
 
 
8018        <li class="covered" data-hits="1" data-linenumber="3">
 
8019          <span class="hits">1</span>
8020
 
 
8021          <code class="ruby">require &#39;./models/init&#39;</code>
 
8022        </li>
8023
 
 
8024        <li class="never" data-hits="" data-linenumber="4">
 
 
 
8027          <code class="ruby"></code>
8028
 
8028        </li>
8029
 
 
8030        <li class="covered" data-hits="1" data-linenumber="5">
 
8031          <span class="hits">1</span>
8032
 
 
8033          <code class="ruby">RSpec.describe Response, type: :model do</code>
8034
 
8034        </li>
8035
 
 
8036        <li class="covered" data-hits="6" data-linenumber="6">
 
8037          <span class="hits">6</span>
8038
 
 
8039          <code class="ruby">  subject { described_class.find_or_create_by! assessment: ass, value: &#39;something&#39; }</code>
 
8040        </li>
8041
 
 
8042        <li class="covered" data-hits="8" data-linenumber="7">
 
8043          <span class="hits">8</span>
8044
 
 
8045          <code class="ruby">  let(:ass) { Assessment.find_or_create_by! visit: vt }</code>
8046
 
8046        </li>
8047
 
 
8048        <li class="covered" data-hits="9" data-linenumber="8">
 
8049          <span class="hits">9</span>
8050
 
 
8051          <code class="ruby">  let!(:sy) { TestFactory.test_survey }</code>
8052
 
8052        </li>
8053
 
 
8054        <li class="covered" data-hits="9" data-linenumber="9">
 
8055          <span class="hits">9</span>
8056
 
 
8057          <code class="ruby">  let!(:ur) { TestFactory.test_user }</code>
8058
 
8058        </li>
8059
 
 
8060        <li class="covered" data-hits="9" data-linenumber="10">
 
8061          <span class="hits">9</span>
8062
 
 
8063          <code class="ruby">  let!(:vt) { Visit.find_or_create_by! user: ur, name: AppConstants:: TEST_VISIT, survey: sy }</code>
8064
 
8064        </li>
8065
 
 
8066        <li class="covered" data-hits="9" data-linenumber="11">
 
8067          <span class="hits">9</span>
8068
 
 
8069          <code class="ruby">  let!(:choice) { Choice.find_or_create_by! response_scale: scale, value: &#39;val&#39;, description: &#39;text&#39; }</code>
 
8070        </li>
8071
 
 
8072        <li class="covered" data-hits="9" data-linenumber="12">
 
8073          <span class="hits">9</span>
8074
 
 
8075          <code class="ruby">  let!(:scale) { ResponseScale.find_or_create_by! name: AppConstants::TEST_RESPONSE_SCALE }</code>
8076
 
8076        </li>
8077
 
 
8078        <li class="never" data-hits="" data-linenumber="13">
 
 
 
8081          <code class="ruby">  </code>
8082
 
8082        </li>
8083
 
 
8084        <li class="never" data-hits="" data-linenumber="14">
 
 
 
8087          <code class="ruby"></code>
8088
 
8088        </li>
8089
 
 
8090        <li class="covered" data-hits="1" data-linenumber="15">
 
8091          <span class="hits">1</span>
8092
 
 
8093          <code class="ruby">  describe &#39;.create!&#39; do</code>
 
8094        </li>
8095
 
 
8096        <li class="covered" data-hits="1" data-linenumber="16">
 
8097          <span class="hits">1</span>
8098
 
 
8099          <code class="ruby">    context &#39;without assessment&#39; do</code>
 
8100        </li>
8101
 
 
8102        <li class="covered" data-hits="3" data-linenumber="17">
 
8103          <span class="hits">3</span>
8104
 
 
8105          <code class="ruby">      it { expect { described_class.create! }.to raise_error ActiveRecord::RecordInvalid }</code>
8106
 
8106        </li>
8107
 
 
8108        <li class="never" data-hits="" data-linenumber="18">
 
 
 
8111          <code class="ruby">    end</code>
8112
 
8112        </li>
8113
 
 
8114        <li class="never" data-hits="" data-linenumber="19">
 
 
 
8117          <code class="ruby"></code>
8118
 
8118        </li>
8119
 
 
8120        <li class="covered" data-hits="1" data-linenumber="20">
 
8121          <span class="hits">1</span>
8122
 
 
8123          <code class="ruby">    context &#39;without value&#39; do</code>
 
8124        </li>
8125
 
 
8126        <li class="covered" data-hits="3" data-linenumber="21">
 
8127          <span class="hits">3</span>
8128
 
 
8129          <code class="ruby">      it { expect { described_class.create! assessment: ass }.to raise_error ActiveRecord::RecordInvalid }</code>
8130
 
8130        </li>
8131
 
 
8132        <li class="never" data-hits="" data-linenumber="22">
 
 
 
8135          <code class="ruby">    end</code>
8136
 
8136        </li>
8137
 
 
8138        <li class="never" data-hits="" data-linenumber="23">
 
 
 
8141          <code class="ruby">  </code>
8142
 
8142        </li>
8143
 
 
8144        <li class="never" data-hits="" data-linenumber="24">
 
 
 
8147          <code class="ruby">    </code>
8148
 
8148        </li>
8149
 
 
8150        <li class="covered" data-hits="1" data-linenumber="25">
 
8151          <span class="hits">1</span>
8152
 
 
8153          <code class="ruby">    context &#39;with value and assessment&#39; do</code>
 
8154        </li>
8155
 
 
8156        <li class="covered" data-hits="3" data-linenumber="26">
 
8157          <span class="hits">3</span>
8158
 
 
8159          <code class="ruby">      it { expect { described_class.find_or_create_by!(assessment: ass, value: &#39;something&#39;) }.not_to raise_error }</code>
 
8160        </li>
8161
 
 
8162        <li class="never" data-hits="" data-linenumber="27">
 
 
 
8165          <code class="ruby">    end</code>
8166
 
8166        </li>
8167
 
 
8168        <li class="never" data-hits="" data-linenumber="28">
 
 
 
8171          <code class="ruby">  end</code>
8172
 
8172        </li>
8173
 
 
8174        <li class="never" data-hits="" data-linenumber="29">
 
 
 
8177          <code class="ruby"></code>
8178
 
8178        </li>
8179
 
 
8180        <li class="covered" data-hits="1" data-linenumber="30">
 
8181          <span class="hits">1</span>
8182
 
 
8183          <code class="ruby">  describe &#39;#to_s&#39; do</code>
 
8184        </li>
8185
 
 
8186        <li class="covered" data-hits="2" data-linenumber="31">
 
8187          <span class="hits">2</span>
8188
 
 
8189          <code class="ruby">    it { expect(subject.to_s).to eq(&quot;#{ass} something&quot;) }</code>
 
8190        </li>
8191
 
 
8192        <li class="never" data-hits="" data-linenumber="32">
 
 
 
8195          <code class="ruby">  end</code>
8196
 
8196        </li>
8197
 
 
8198        <li class="never" data-hits="" data-linenumber="33">
 
 
 
8201          <code class="ruby"></code>
8202
 
8202        </li>
8203
 
 
8204        <li class="covered" data-hits="1" data-linenumber="34">
 
8205          <span class="hits">1</span>
8206
 
 
8207          <code class="ruby">  describe &#39;#destroy!&#39; do</code>
 
8208        </li>
8209
 
 
8210        <li class="covered" data-hits="1" data-linenumber="35">
 
8211          <span class="hits">1</span>
8212
 
 
8213          <code class="ruby">    context &#39;with choice&#39; do</code>
 
8214        </li>
8215
 
 
8216        <li class="covered" data-hits="1" data-linenumber="36">
 
8217          <span class="hits">1</span>
8218
 
 
8219          <code class="ruby">      it do</code>
8220
 
8220        </li>
8221
 
 
8222        <li class="covered" data-hits="1" data-linenumber="37">
 
8223          <span class="hits">1</span>
8224
 
 
8225          <code class="ruby">        subject.choice = choice</code>
8226
 
8226        </li>
8227
 
 
8228        <li class="covered" data-hits="1" data-linenumber="38">
 
8229          <span class="hits">1</span>
8230
 
 
8231          <code class="ruby">        subject.destroy!</code>
8232
 
8232        </li>
8233
 
 
8234        <li class="covered" data-hits="1" data-linenumber="39">
 
8235          <span class="hits">1</span>
8236
 
 
8237          <code class="ruby">        expect(choice).not_to be_nil</code>
8238
 
8238        </li>
8239
 
 
8240        <li class="never" data-hits="" data-linenumber="40">
 
 
 
8243          <code class="ruby">      end</code>
8244
 
8244        </li>
8245
 
 
8246        <li class="never" data-hits="" data-linenumber="41">
 
 
 
8249          <code class="ruby">    end</code>
8250
 
8250        </li>
8251
 
 
8252        <li class="never" data-hits="" data-linenumber="42">
 
 
 
8255          <code class="ruby"></code>
8256
 
8256        </li>
8257
 
 
8258        <li class="covered" data-hits="1" data-linenumber="43">
 
8259          <span class="hits">1</span>
8260
 
 
8261          <code class="ruby">    context &#39;with assessment&#39; do</code>
 
8262        </li>
8263
 
 
8264        <li class="covered" data-hits="1" data-linenumber="44">
 
8265          <span class="hits">1</span>
8266
 
 
8267          <code class="ruby">      it do</code>
8268
 
8268        </li>
8269
 
 
8270        <li class="covered" data-hits="1" data-linenumber="45">
 
8271          <span class="hits">1</span>
8272
 
 
8273          <code class="ruby">        subject.destroy!</code>
8274
 
8274        </li>
8275
 
 
8276        <li class="covered" data-hits="1" data-linenumber="46">
 
8277          <span class="hits">1</span>
8278
 
 
8279          <code class="ruby">        expect(ass).not_to be_nil</code>
8280
 
8280        </li>
8281
 
 
8282        <li class="never" data-hits="" data-linenumber="47">
 
 
 
8285          <code class="ruby">      end</code>
8286
 
8286        </li>
8287
 
 
8288        <li class="never" data-hits="" data-linenumber="48">
 
 
 
8291          <code class="ruby">    end</code>
8292
 
8292        </li>
8293
 
 
8294        <li class="never" data-hits="" data-linenumber="49">
 
 
 
8297          <code class="ruby">  end</code>
8298
 
8298        </li>
8299
 
 
8300        <li class="never" data-hits="" data-linenumber="50">
 
 
 
8303          <code class="ruby">    </code>
8304
 
8304        </li>
8305
 
 
8306        <li class="covered" data-hits="1" data-linenumber="51">
 
8307          <span class="hits">1</span>
8308
 
 
8309          <code class="ruby">  describe &#39;multiple responses&#39; do</code>
 
8310        </li>
8311
 
 
8312        <li class="covered" data-hits="1" data-linenumber="52">
 
8313          <span class="hits">1</span>
8314
 
 
8315          <code class="ruby">    it do</code>
8316
 
8316        </li>
8317
 
 
8318        <li class="covered" data-hits="1" data-linenumber="53">
 
8319          <span class="hits">1</span>
8320
 
 
8321          <code class="ruby">      rep2 = described_class.create_with(score: 2).find_or_create_by!(assessment: ass, value: &#39;2&#39;) </code>
 
8322        </li>
8323
 
 
8324        <li class="covered" data-hits="1" data-linenumber="54">
 
8325          <span class="hits">1</span>
8326
 
 
8327          <code class="ruby">      rep3 = described_class.create_with(score: 5).find_or_create_by!(assessment: ass, value: &#39;3&#39;) </code>
 
8328        </li>
8329
 
 
8330        <li class="covered" data-hits="1" data-linenumber="55">
 
8331          <span class="hits">1</span>
8332
 
 
8333          <code class="ruby">      ass.responses.concat([rep2, rep3])</code>
8334
 
8334        </li>
8335
 
 
8336        <li class="covered" data-hits="1" data-linenumber="56">
 
8337          <span class="hits">1</span>
8338
 
 
8339          <code class="ruby">      expect(subject.assessment.responses.count.to_s).to eq &#39;3&#39;     </code>
 
8340        </li>
8341
 
 
8342        <li class="never" data-hits="" data-linenumber="57">
 
 
 
8345          <code class="ruby">    end</code>
8346
 
8346        </li>
8347
 
 
8348        <li class="never" data-hits="" data-linenumber="58">
 
 
 
8351          <code class="ruby">  end</code>
8352
 
8352        </li>
8353
 
 
8354        <li class="never" data-hits="" data-linenumber="59">
 
 
 
8357          <code class="ruby"></code>
8358
 
8358        </li>
8359
 
 
8360        <li class="covered" data-hits="1" data-linenumber="60">
 
8361          <span class="hits">1</span>
8362
 
 
8363          <code class="ruby">  describe &#39;#created_at today&#39; do</code>
 
8364        </li>
8365
 
 
8366        <li class="never" data-hits="" data-linenumber="61">
 
 
 
8369          <code class="ruby">    # expect record to be created within the last 5 minutes to check timestamp works</code>
 
8370        </li>
8371
 
 
8372        <li class="covered" data-hits="2" data-linenumber="62">
 
8373          <span class="hits">2</span>
8374
 
 
8375          <code class="ruby">    it { expect(Time.now - subject.created_at).to be &lt; 300 }</code>
8376
 
8376        </li>
8377
 
 
8378        <li class="never" data-hits="" data-linenumber="63">
 
 
 
8381          <code class="ruby">  end</code>
8382
 
8382        </li>
8383
 
 
8384        <li class="never" data-hits="" data-linenumber="64">
 
 
 
8387          <code class="ruby">end</code>
8388
 
8388        </li>
8389
 
 
8390    </ol>
8391
 
8391  </pre>
8392
 
8392</div>
8393
 
 
 
8395        <div class="source_table" id="6857b0b493292a70027d63f12eba7fe318a17d20">
 
8396  <div class="header">
 
8397    <h3>spec/schedule_spec.rb</h3>
8398
 
8398    <h4><span class="green">100.0 %</span> covered</h4>
 
8399    <div>
 
8400      <b>19</b> relevant lines. 
8401
 
8401      <span class="green"><b>19</b> lines covered</span> and
 
8402      <span class="red"><b>0</b> lines missed.</span>
 
8403    </div>
8404
 
8404  </div>
8405
 
 
8406  <pre>
 
8407    <ol>
 
 
8409        <li class="never" data-hits="" data-linenumber="1">
 
 
 
8412          <code class="ruby"># frozen_string_literal: true</code>
 
8413        </li>
8414
 
 
8415        <li class="never" data-hits="" data-linenumber="2">
 
 
 
8418          <code class="ruby"></code>
8419
 
8419        </li>
8420
 
 
8421        <li class="covered" data-hits="1" data-linenumber="3">
 
8422          <span class="hits">1</span>
8423
 
 
8424          <code class="ruby">RSpec.describe Schedule, type: :model do</code>
8425
 
8425        </li>
8426
 
 
8427        <li class="covered" data-hits="3" data-linenumber="4">
 
8428          <span class="hits">3</span>
8429
 
 
8430          <code class="ruby">  subject { described_class.find_or_create_by! name: AppConstants::TEST_SCHEDULE, study: study }</code>
8431
 
8431        </li>
8432
 
 
8433        <li class="covered" data-hits="7" data-linenumber="5">
 
8434          <span class="hits">7</span>
8435
 
 
8436          <code class="ruby">  let!(:study) { TestFactory.test_study }</code>
8437
 
8437        </li>
8438
 
 
8439        <li class="never" data-hits="" data-linenumber="6">
 
 
 
8442          <code class="ruby"> </code>
8443
 
8443        </li>
8444
 
 
8445        <li class="never" data-hits="" data-linenumber="7">
 
 
 
8448          <code class="ruby"> </code>
8449
 
8449        </li>
8450
 
 
8451        <li class="covered" data-hits="1" data-linenumber="8">
 
8452          <span class="hits">1</span>
8453
 
 
8454          <code class="ruby">  describe &#39;.create!&#39; do</code>
 
8455        </li>
8456
 
 
8457        <li class="covered" data-hits="1" data-linenumber="9">
 
8458          <span class="hits">1</span>
8459
 
 
8460          <code class="ruby">    context &#39;without name or study&#39; do</code>
 
8461        </li>
8462
 
 
8463        <li class="covered" data-hits="3" data-linenumber="10">
 
8464          <span class="hits">3</span>
8465
 
 
8466          <code class="ruby">      it { expect { described_class.create! }.to raise_error ActiveRecord::RecordInvalid }</code>
8467
 
8467        </li>
8468
 
 
8469        <li class="never" data-hits="" data-linenumber="11">
 
 
 
8472          <code class="ruby">    end  </code>
8473
 
8473        </li>
8474
 
 
8475        <li class="never" data-hits="" data-linenumber="12">
 
 
 
8478          <code class="ruby"></code>
8479
 
8479        </li>
8480
 
 
8481        <li class="covered" data-hits="1" data-linenumber="13">
 
8482          <span class="hits">1</span>
8483
 
 
8484          <code class="ruby">    context &#39;1 character name&#39; do</code>
 
8485        </li>
8486
 
 
8487        <li class="covered" data-hits="3" data-linenumber="14">
 
8488          <span class="hits">3</span>
8489
 
 
8490          <code class="ruby">      it { expect { described_class.create! name: &#39;a&#39;, study: study }.to raise_error ActiveRecord::RecordInvalid }</code>
 
8491        </li>
8492
 
 
8493        <li class="never" data-hits="" data-linenumber="15">
 
 
 
8496          <code class="ruby">    end</code>
8497
 
8497        </li>
8498
 
 
8499        <li class="never" data-hits="" data-linenumber="16">
 
 
 
8502          <code class="ruby">    </code>
8503
 
8503        </li>
8504
 
 
8505        <li class="covered" data-hits="1" data-linenumber="17">
 
8506          <span class="hits">1</span>
8507
 
 
8508          <code class="ruby">    context &#39;2+ character name and title&#39; do</code>
 
8509        </li>
8510
 
 
8511        <li class="covered" data-hits="3" data-linenumber="18">
 
8512          <span class="hits">3</span>
8513
 
 
8514          <code class="ruby">      it { expect { described_class.find_or_create_by! name: &#39;as&#39;, study: study }.to_not raise_error }</code>
 
8515        </li>
8516
 
 
8517        <li class="never" data-hits="" data-linenumber="19">
 
 
 
8520          <code class="ruby">    end</code>
8521
 
8521        </li>
8522
 
 
8523        <li class="never" data-hits="" data-linenumber="20">
 
 
 
8526          <code class="ruby"></code>
8527
 
8527        </li>
8528
 
 
8529        <li class="covered" data-hits="1" data-linenumber="21">
 
8530          <span class="hits">1</span>
8531
 
 
8532          <code class="ruby">    context &#39;unique name&#39; do</code>
 
8533        </li>
8534
 
 
8535        <li class="covered" data-hits="1" data-linenumber="22">
 
8536          <span class="hits">1</span>
8537
 
 
8538          <code class="ruby">      it do</code>
8539
 
8539        </li>
8540
 
 
8541        <li class="covered" data-hits="1" data-linenumber="23">
 
8542          <span class="hits">1</span>
8543
 
 
8544          <code class="ruby">        rs = described_class.create! name: &#39;a12&#39;, study: study</code>
 
8545        </li>
8546
 
 
8547        <li class="covered" data-hits="2" data-linenumber="24">
 
8548          <span class="hits">2</span>
8549
 
 
8550          <code class="ruby">        expect { described_class.create! name: &#39;a12&#39;, study: study }.to raise_error ActiveRecord::RecordInvalid</code>
 
8551        </li>
8552
 
 
8553        <li class="covered" data-hits="1" data-linenumber="25">
 
8554          <span class="hits">1</span>
8555
 
 
8556          <code class="ruby">        rs.destroy!</code>
8557
 
8557        </li>
8558
 
 
8559        <li class="never" data-hits="" data-linenumber="26">
 
 
 
8562          <code class="ruby">      end</code>
8563
 
8563        </li>
8564
 
 
8565        <li class="never" data-hits="" data-linenumber="27">
 
 
 
8568          <code class="ruby">    end</code>
8569
 
8569        </li>
8570
 
 
8571        <li class="never" data-hits="" data-linenumber="28">
 
 
 
8574          <code class="ruby"></code>
8575
 
8575        </li>
8576
 
 
8577        <li class="covered" data-hits="1" data-linenumber="29">
 
8578          <span class="hits">1</span>
8579
 
 
8580          <code class="ruby">    describe &#39;#to_s&#39; do</code>
 
8581        </li>
8582
 
 
8583        <li class="covered" data-hits="2" data-linenumber="30">
 
8584          <span class="hits">2</span>
8585
 
 
8586          <code class="ruby">      it { expect(subject.to_s).to eq AppConstants::TEST_SCHEDULE }</code>
8587
 
8587        </li>
8588
 
 
8589        <li class="never" data-hits="" data-linenumber="31">
 
 
 
8592          <code class="ruby">    end</code>
8593
 
8593        </li>
8594
 
 
8595        <li class="never" data-hits="" data-linenumber="32">
 
 
 
8598          <code class="ruby"></code>
8599
 
8599        </li>
8600
 
 
8601        <li class="covered" data-hits="1" data-linenumber="33">
 
8602          <span class="hits">1</span>
8603
 
 
8604          <code class="ruby">    describe &#39;#created_at today&#39; do</code>
 
8605        </li>
8606
 
 
8607        <li class="never" data-hits="" data-linenumber="34">
 
 
 
8610          <code class="ruby">      # expect record to be created within the last 5 minutes to check timestamp works</code>
 
8611        </li>
8612
 
 
8613        <li class="covered" data-hits="2" data-linenumber="35">
 
8614          <span class="hits">2</span>
8615
 
 
8616          <code class="ruby">      it { expect(Time.now - subject.created_at).to be &lt; 300 }</code>
8617
 
8617        </li>
8618
 
 
8619        <li class="never" data-hits="" data-linenumber="36">
 
 
 
8622          <code class="ruby">    end</code>
8623
 
8623        </li>
8624
 
 
8625        <li class="never" data-hits="" data-linenumber="37">
 
 
 
8628          <code class="ruby">  end</code>
8629
 
8629        </li>
8630
 
 
8631        <li class="never" data-hits="" data-linenumber="38">
 
 
 
8634          <code class="ruby">end</code>
8635
 
8635        </li>
8636
 
 
8637    </ol>
8638
 
8638  </pre>
8639
 
8639</div>
8640
 
 
 
8642        <div class="source_table" id="73df1469b4108bfe19cd3acfa6f51f768d121b48">
 
8643  <div class="header">
 
8644    <h3>spec/score_spec.rb</h3>
8645
 
8645    <h4><span class="green">97.67 %</span> covered</h4>
 
8646    <div>
 
8647      <b>43</b> relevant lines. 
8648
 
8648      <span class="green"><b>42</b> lines covered</span> and
 
8649      <span class="red"><b>1</b> lines missed.</span>
 
8650    </div>
8651
 
8651  </div>
8652
 
 
8653  <pre>
 
8654    <ol>
 
 
8656        <li class="never" data-hits="" data-linenumber="1">
 
 
 
8659          <code class="ruby"># frozen_string_literal: true</code>
 
8660        </li>
8661
 
 
8662        <li class="never" data-hits="" data-linenumber="2">
 
 
 
8665          <code class="ruby"></code>
8666
 
8666        </li>
8667
 
 
8668        <li class="covered" data-hits="1" data-linenumber="3">
 
8669          <span class="hits">1</span>
8670
 
 
8671          <code class="ruby">require &#39;./models/init&#39;</code>
 
8672        </li>
8673
 
 
8674        <li class="never" data-hits="" data-linenumber="4">
 
 
 
8677          <code class="ruby"></code>
8678
 
8678        </li>
8679
 
 
8680        <li class="covered" data-hits="1" data-linenumber="5">
 
8681          <span class="hits">1</span>
8682
 
 
8683          <code class="ruby">RSpec.describe Score, type: :model do</code>
8684
 
8684        </li>
8685
 
 
8686        <li class="covered" data-hits="5" data-linenumber="6">
 
8687          <span class="hits">5</span>
8688
 
 
8689          <code class="ruby">  subject { described_class.create_with(score: 1).find_or_create_by! assessment: ass, name: &#39;total&#39; }</code>
 
8690        </li>
8691
 
 
8692        <li class="covered" data-hits="8" data-linenumber="7">
 
8693          <span class="hits">8</span>
8694
 
 
8695          <code class="ruby">  let(:ass) { Assessment.find_or_create_by! visit: vt, order_number: 1 }</code>
8696
 
8696        </li>
8697
 
 
8698        <li class="covered" data-hits="12" data-linenumber="8">
 
8699          <span class="hits">12</span>
8700
 
 
8701          <code class="ruby">  let!(:sy) { TestFactory.test_survey }</code>
8702
 
8702        </li>
8703
 
 
8704        <li class="covered" data-hits="12" data-linenumber="9">
 
8705          <span class="hits">12</span>
8706
 
 
8707          <code class="ruby">  let!(:ur) { TestFactory.test_user }</code>
8708
 
8708        </li>
8709
 
 
8710        <li class="covered" data-hits="12" data-linenumber="10">
 
8711          <span class="hits">12</span>
8712
 
 
8713          <code class="ruby">  let!(:vt) { Visit.find_or_create_by! user: ur, name: AppConstants::TEST_VISIT, survey: sy }</code>
8714
 
8714        </li>
8715
 
 
8716        <li class="covered" data-hits="12" data-linenumber="11">
 
8717          <span class="hits">12</span>
8718
 
 
8719          <code class="ruby">  let!(:choice) { Choice.find_or_create_by! response_scale: scale, value: &#39;val&#39;, description: &#39;text&#39; }</code>
 
8720        </li>
8721
 
 
8722        <li class="covered" data-hits="12" data-linenumber="12">
 
8723          <span class="hits">12</span>
8724
 
 
8725          <code class="ruby">  let!(:scale) { TestFactory.test_response_scale }</code>
8726
 
8726        </li>
8727
 
 
8728        <li class="never" data-hits="" data-linenumber="13">
 
 
 
8731          <code class="ruby"></code>
8732
 
8732        </li>
8733
 
 
8734        <li class="covered" data-hits="1" data-linenumber="14">
 
8735          <span class="hits">1</span>
8736
 
 
8737          <code class="ruby">  describe &#39;#to_s&#39; do</code>
 
8738        </li>
8739
 
 
8740        <li class="covered" data-hits="2" data-linenumber="15">
 
8741          <span class="hits">2</span>
8742
 
 
8743          <code class="ruby">    it { expect(subject.to_s).to eq &quot;#{subject.assessment} #{subject.name}: #{subject.score}&quot; }   </code>
 
8744        </li>
8745
 
 
8746        <li class="never" data-hits="" data-linenumber="16">
 
 
 
8749          <code class="ruby">  end</code>
8750
 
8750        </li>
8751
 
 
8752        <li class="never" data-hits="" data-linenumber="17">
 
 
 
8755          <code class="ruby"></code>
8756
 
8756        </li>
8757
 
 
8758        <li class="covered" data-hits="1" data-linenumber="18">
 
8759          <span class="hits">1</span>
8760
 
 
8761          <code class="ruby">  describe &#39;.create!&#39; do</code>
 
8762        </li>
8763
 
 
8764        <li class="covered" data-hits="1" data-linenumber="19">
 
8765          <span class="hits">1</span>
8766
 
 
8767          <code class="ruby">    context &#39;without assessment or name&#39; do</code>
 
8768        </li>
8769
 
 
8770        <li class="covered" data-hits="3" data-linenumber="20">
 
8771          <span class="hits">3</span>
8772
 
 
8773          <code class="ruby">      it { expect { described_class.create! }.to raise_error ActiveRecord::RecordInvalid }</code>
8774
 
8774        </li>
8775
 
 
8776        <li class="never" data-hits="" data-linenumber="21">
 
 
 
8779          <code class="ruby">    end</code>
8780
 
8780        </li>
8781
 
 
8782        <li class="never" data-hits="" data-linenumber="22">
 
 
 
8785          <code class="ruby"></code>
8786
 
8786        </li>
8787
 
 
8788        <li class="covered" data-hits="1" data-linenumber="23">
 
8789          <span class="hits">1</span>
8790
 
 
8791          <code class="ruby">    context &#39;without assessment&#39; do</code>
 
8792        </li>
8793
 
 
8794        <li class="covered" data-hits="3" data-linenumber="24">
 
8795          <span class="hits">3</span>
8796
 
 
8797          <code class="ruby">      it { expect { described_class.create!(name: &#39;total&#39;) }.to raise_error ActiveRecord::RecordInvalid }</code>
 
8798        </li>
8799
 
 
8800        <li class="never" data-hits="" data-linenumber="25">
 
 
 
8803          <code class="ruby">    end</code>
8804
 
8804        </li>
8805
 
 
8806        <li class="never" data-hits="" data-linenumber="26">
 
 
 
8809          <code class="ruby"></code>
8810
 
8810        </li>
8811
 
 
8812        <li class="covered" data-hits="1" data-linenumber="27">
 
8813          <span class="hits">1</span>
8814
 
 
8815          <code class="ruby">    context &#39;without name&#39; do</code>
 
8816        </li>
8817
 
 
8818        <li class="covered" data-hits="3" data-linenumber="28">
 
8819          <span class="hits">3</span>
8820
 
 
8821          <code class="ruby">      it { expect { described_class.create!(assessment: ass) }.to raise_error ActiveRecord::RecordInvalid }</code>
8822
 
8822        </li>
8823
 
 
8824        <li class="never" data-hits="" data-linenumber="29">
 
 
 
8827          <code class="ruby">    end</code>
8828
 
8828        </li>
8829
 
 
8830        <li class="never" data-hits="" data-linenumber="30">
 
 
 
8833          <code class="ruby"></code>
8834
 
8834        </li>
8835
 
 
8836        <li class="covered" data-hits="1" data-linenumber="31">
 
8837          <span class="hits">1</span>
8838
 
 
8839          <code class="ruby">    context &#39;assessment and name&#39; do</code>
 
8840        </li>
8841
 
 
8842        <li class="covered" data-hits="3" data-linenumber="32">
 
8843          <span class="hits">3</span>
8844
 
 
8845          <code class="ruby">      it { expect { Score.create_with(score: 8).find_or_create_by!(assessment: ass, name: &#39;tote&#39;) }.not_to raise_error }</code>
 
8846        </li>
8847
 
 
8848        <li class="never" data-hits="" data-linenumber="33">
 
 
 
8851          <code class="ruby">    end</code>
8852
 
8852        </li>
8853
 
 
8854        <li class="never" data-hits="" data-linenumber="34">
 
 
 
8857          <code class="ruby"></code>
8858
 
8858        </li>
8859
 
 
8860        <li class="covered" data-hits="1" data-linenumber="35">
 
8861          <span class="hits">1</span>
8862
 
 
8863          <code class="ruby">    context &#39;duplicate assessment and name&#39; do</code>
 
8864        </li>
8865
 
 
8866        <li class="covered" data-hits="1" data-linenumber="36">
 
8867          <span class="hits">1</span>
8868
 
 
8869          <code class="ruby">      it do</code>
8870
 
8870        </li>
8871
 
 
8872        <li class="covered" data-hits="1" data-linenumber="37">
 
8873          <span class="hits">1</span>
8874
 
 
8875          <code class="ruby">        expect do</code>
8876
 
8876        </li>
8877
 
 
8878        <li class="missed" data-hits="0" data-linenumber="38">
 
 
 
8881          <code class="ruby">          described_class.create!(assessment: ass, name: &#39;tote&#39;, order_number: 1).to raise_error ActiveRecord::RecordInvalid</code>
 
8882        </li>
8883
 
 
8884        <li class="never" data-hits="" data-linenumber="39">
 
 
 
8887          <code class="ruby">        end </code>
8888
 
8888        </li>
8889
 
 
8890        <li class="never" data-hits="" data-linenumber="40">
 
 
 
8893          <code class="ruby">      end </code>
8894
 
8894        </li>
8895
 
 
8896        <li class="never" data-hits="" data-linenumber="41">
 
 
 
8899          <code class="ruby"></code>
8900
 
8900        </li>
8901
 
 
8902        <li class="covered" data-hits="2" data-linenumber="42">
 
8903          <span class="hits">2</span>
8904
 
 
8905          <code class="ruby">      it { expect { described_class.create!(assessment: ass, name: &#39;tote&#39;, order_number: 2).not_to raise_error } }</code>
 
8906        </li>
8907
 
 
8908        <li class="never" data-hits="" data-linenumber="43">
 
 
 
8911          <code class="ruby">    end</code>
8912
 
8912        </li>
8913
 
 
8914        <li class="never" data-hits="" data-linenumber="44">
 
 
 
8917          <code class="ruby">  end</code>
8918
 
8918        </li>
8919
 
 
8920        <li class="never" data-hits="" data-linenumber="45">
 
 
 
8923          <code class="ruby"></code>
8924
 
8924        </li>
8925
 
 
8926        <li class="covered" data-hits="1" data-linenumber="46">
 
8927          <span class="hits">1</span>
8928
 
 
8929          <code class="ruby">  describe &#39;#destroy!&#39; do</code>
 
8930        </li>
8931
 
 
8932        <li class="covered" data-hits="1" data-linenumber="47">
 
8933          <span class="hits">1</span>
8934
 
 
8935          <code class="ruby">    context &#39;preserves assessment&#39; do</code>
 
8936        </li>
8937
 
 
8938        <li class="covered" data-hits="1" data-linenumber="48">
 
8939          <span class="hits">1</span>
8940
 
 
8941          <code class="ruby">      it do</code>
8942
 
8942        </li>
8943
 
 
8944        <li class="covered" data-hits="1" data-linenumber="49">
 
8945          <span class="hits">1</span>
8946
 
 
8947          <code class="ruby">        subject.destroy!</code>
8948
 
8948        </li>
8949
 
 
8950        <li class="covered" data-hits="1" data-linenumber="50">
 
8951          <span class="hits">1</span>
8952
 
 
8953          <code class="ruby">        expect(ass).not_to be_nil</code>
8954
 
8954        </li>
8955
 
 
8956        <li class="never" data-hits="" data-linenumber="51">
 
 
 
8959          <code class="ruby">      end</code>
8960
 
8960        </li>
8961
 
 
8962        <li class="never" data-hits="" data-linenumber="52">
 
 
 
8965          <code class="ruby">    end</code>
8966
 
8966        </li>
8967
 
 
8968        <li class="never" data-hits="" data-linenumber="53">
 
 
 
8971          <code class="ruby">  end</code>
8972
 
8972        </li>
8973
 
 
8974        <li class="never" data-hits="" data-linenumber="54">
 
 
 
8977          <code class="ruby">    </code>
8978
 
8978        </li>
8979
 
 
8980        <li class="covered" data-hits="1" data-linenumber="55">
 
8981          <span class="hits">1</span>
8982
 
 
8983          <code class="ruby">  describe &#39;destroys multiple scores&#39; do</code>
 
8984        </li>
8985
 
 
8986        <li class="covered" data-hits="1" data-linenumber="56">
 
8987          <span class="hits">1</span>
8988
 
 
8989          <code class="ruby">    it do</code>
8990
 
8990        </li>
8991
 
 
8992        <li class="covered" data-hits="1" data-linenumber="57">
 
8993          <span class="hits">1</span>
8994
 
 
8995          <code class="ruby">      ass.scores.each(&amp;:destroy!)</code>
8996
 
8996        </li>
8997
 
 
8998        <li class="covered" data-hits="1" data-linenumber="58">
 
8999          <span class="hits">1</span>
9000
 
 
9001          <code class="ruby">      expect(ass.scores.count.to_s).to eq &#39;0&#39; </code>
 
9002        </li>
9003
 
 
9004        <li class="never" data-hits="" data-linenumber="59">
 
 
 
9007          <code class="ruby">    end</code>
9008
 
9008        </li>
9009
 
 
9010        <li class="never" data-hits="" data-linenumber="60">
 
 
 
9013          <code class="ruby"></code>
9014
 
9014        </li>
9015
 
 
9016        <li class="covered" data-hits="1" data-linenumber="61">
 
9017          <span class="hits">1</span>
9018
 
 
9019          <code class="ruby">    it do</code>
9020
 
9020        </li>
9021
 
 
9022        <li class="covered" data-hits="1" data-linenumber="62">
 
9023          <span class="hits">1</span>
9024
 
 
9025          <code class="ruby">      rep2 = described_class.create_with(score: 2).find_or_create_by! assessment: ass, name: &#39;Depression&#39; </code>
 
9026        </li>
9027
 
 
9028        <li class="covered" data-hits="1" data-linenumber="63">
 
9029          <span class="hits">1</span>
9030
 
 
9031          <code class="ruby">      rep3 = described_class.create_with(score: 5).find_or_create_by! assessment: ass, name: &#39;Anxiety&#39; </code>
 
9032        </li>
9033
 
 
9034        <li class="covered" data-hits="1" data-linenumber="64">
 
9035          <span class="hits">1</span>
9036
 
 
9037          <code class="ruby">      ass.scores.concat([rep2, rep3])</code>
9038
 
9038        </li>
9039
 
 
9040        <li class="covered" data-hits="1" data-linenumber="65">
 
9041          <span class="hits">1</span>
9042
 
 
9043          <code class="ruby">      expect(subject.assessment.scores.count.to_s).to eq &#39;3&#39;     </code>
 
9044        </li>
9045
 
 
9046        <li class="covered" data-hits="1" data-linenumber="66">
 
9047          <span class="hits">1</span>
9048
 
 
9049          <code class="ruby">      rep2.destroy!</code>
9050
 
9050        </li>
9051
 
 
9052        <li class="covered" data-hits="1" data-linenumber="67">
 
9053          <span class="hits">1</span>
9054
 
 
9055          <code class="ruby">      rep3.destroy!</code>
9056
 
9056        </li>
9057
 
 
9058        <li class="never" data-hits="" data-linenumber="68">
 
 
 
9061          <code class="ruby">    end</code>
9062
 
9062        </li>
9063
 
 
9064        <li class="never" data-hits="" data-linenumber="69">
 
 
 
9067          <code class="ruby">  end</code>
9068
 
9068        </li>
9069
 
 
9070        <li class="never" data-hits="" data-linenumber="70">
 
 
 
9073          <code class="ruby"></code>
9074
 
9074        </li>
9075
 
 
9076        <li class="covered" data-hits="1" data-linenumber="71">
 
9077          <span class="hits">1</span>
9078
 
 
9079          <code class="ruby">  describe &#39;#created_at today&#39; do</code>
 
9080        </li>
9081
 
 
9082        <li class="never" data-hits="" data-linenumber="72">
 
 
 
9085          <code class="ruby">    # expect record to be created within the last 5 minutes to check timestamp works</code>
 
9086        </li>
9087
 
 
9088        <li class="covered" data-hits="2" data-linenumber="73">
 
9089          <span class="hits">2</span>
9090
 
 
9091          <code class="ruby">    it { expect(Time.now - subject.created_at).to be &lt; 300 }</code>
9092
 
9092        </li>
9093
 
 
9094        <li class="never" data-hits="" data-linenumber="74">
 
 
 
9097          <code class="ruby">  end</code>
9098
 
9098        </li>
9099
 
 
9100        <li class="never" data-hits="" data-linenumber="75">
 
 
 
9103          <code class="ruby">end</code>
9104
 
9104        </li>
9105
 
 
9106    </ol>
9107
 
9107  </pre>
9108
 
9108</div>
9109
 
 
 
9111        <div class="source_table" id="fea0ee70b413122c0fb07129bd5c696d3e282b1f">
 
9112  <div class="header">
 
9113    <h3>spec/study_event_instrument_spec.rb</h3>
9114
 
9114    <h4><span class="green">100.0 %</span> covered</h4>
 
9115    <div>
 
9116      <b>28</b> relevant lines. 
9117
 
9117      <span class="green"><b>28</b> lines covered</span> and
 
9118      <span class="red"><b>0</b> lines missed.</span>
 
9119    </div>
9120
 
9120  </div>
9121
 
 
9122  <pre>
 
9123    <ol>
 
 
9125        <li class="never" data-hits="" data-linenumber="1">
 
 
 
9128          <code class="ruby"># frozen_string_literal: true</code>
 
9129        </li>
9130
 
 
9131        <li class="never" data-hits="" data-linenumber="2">
 
 
 
9134          <code class="ruby"></code>
9135
 
9135        </li>
9136
 
 
9137        <li class="covered" data-hits="1" data-linenumber="3">
 
9138          <span class="hits">1</span>
9139
 
 
9140          <code class="ruby">require &#39;./models/init&#39;</code>
 
9141        </li>
9142
 
 
9143        <li class="never" data-hits="" data-linenumber="4">
 
 
 
9146          <code class="ruby"></code>
9147
 
9147        </li>
9148
 
 
9149        <li class="covered" data-hits="1" data-linenumber="5">
 
9150          <span class="hits">1</span>
9151
 
 
9152          <code class="ruby">RSpec.describe StudyEventInstrument, type: :model do</code>
9153
 
9153        </li>
9154
 
 
9155        <li class="covered" data-hits="5" data-linenumber="6">
 
9156          <span class="hits">5</span>
9157
 
 
9158          <code class="ruby">  subject { described_class.find_or_create_by! study_event: study_event, instrument: instrument }</code>
9159
 
9159        </li>
9160
 
 
9161        <li class="covered" data-hits="9" data-linenumber="7">
 
9162          <span class="hits">9</span>
9163
 
 
9164          <code class="ruby">  let!(:arm) { Arm.find_or_create_by! name: AppConstants::TEST_ARM, schedule: schedule, number: 1 }</code>
9165
 
9165        </li>
9166
 
 
9167        <li class="covered" data-hits="9" data-linenumber="8">
 
9168          <span class="hits">9</span>
9169
 
 
9170          <code class="ruby">  let!(:schedule) { Schedule.find_or_create_by! name: AppConstants::TEST_SCHEDULE, study: study }</code>
9171
 
9171        </li>
9172
 
 
9173        <li class="covered" data-hits="9" data-linenumber="9">
 
9174          <span class="hits">9</span>
9175
 
 
9176          <code class="ruby">  let!(:study) { TestFactory.test_study }</code>
9177
 
9177        </li>
9178
 
 
9179        <li class="covered" data-hits="9" data-linenumber="10">
 
9180          <span class="hits">9</span>
9181
 
 
9182          <code class="ruby">  let!(:instrument) { Instrument.find_by_name(AppConstants::TEST_INSTRUMENT) }</code>
9183
 
9183        </li>
9184
 
 
9185        <li class="covered" data-hits="9" data-linenumber="11">
 
9186          <span class="hits">9</span>
9187
 
 
9188          <code class="ruby">  let!(:study_event) { StudyEvent.find_or_create_by! name: AppConstants::TEST_STUDY_EVENT, arm: arm }</code>
9189
 
9189        </li>
9190
 
 
9191        <li class="never" data-hits="" data-linenumber="12">
 
 
 
9194          <code class="ruby">  </code>
9195
 
9195        </li>
9196
 
 
9197        <li class="covered" data-hits="1" data-linenumber="13">
 
9198          <span class="hits">1</span>
9199
 
 
9200          <code class="ruby">  describe &#39;.create!&#39; do</code>
 
9201        </li>
9202
 
 
9203        <li class="covered" data-hits="1" data-linenumber="14">
 
9204          <span class="hits">1</span>
9205
 
 
9206          <code class="ruby">    context &#39;with no instrument or StudyEvent&#39; do</code>
 
9207        </li>
9208
 
 
9209        <li class="covered" data-hits="3" data-linenumber="15">
 
9210          <span class="hits">3</span>
9211
 
 
9212          <code class="ruby">      it { expect { described_class.create! }.to raise_error ActiveRecord::RecordInvalid }</code>
9213
 
9213        </li>
9214
 
 
9215        <li class="never" data-hits="" data-linenumber="16">
 
 
 
9218          <code class="ruby">    end</code>
9219
 
9219        </li>
9220
 
 
9221        <li class="never" data-hits="" data-linenumber="17">
 
 
 
9224          <code class="ruby"></code>
9225
 
9225        </li>
9226
 
 
9227        <li class="covered" data-hits="1" data-linenumber="18">
 
9228          <span class="hits">1</span>
9229
 
 
9230          <code class="ruby">    context &#39;with no instrument&#39; do</code>
 
9231        </li>
9232
 
 
9233        <li class="covered" data-hits="3" data-linenumber="19">
 
9234          <span class="hits">3</span>
9235
 
 
9236          <code class="ruby">      it { expect { described_class.create! study_event: study_event }.to raise_error ActiveRecord::RecordInvalid }</code>
9237
 
9237        </li>
9238
 
 
9239        <li class="never" data-hits="" data-linenumber="20">
 
 
 
9242          <code class="ruby">    end</code>
9243
 
9243        </li>
9244
 
 
9245        <li class="never" data-hits="" data-linenumber="21">
 
 
 
9248          <code class="ruby"></code>
9249
 
9249        </li>
9250
 
 
9251        <li class="covered" data-hits="1" data-linenumber="22">
 
9252          <span class="hits">1</span>
9253
 
 
9254          <code class="ruby">    context &#39;with no StudyEvent&#39; do</code>
 
9255        </li>
9256
 
 
9257        <li class="covered" data-hits="3" data-linenumber="23">
 
9258          <span class="hits">3</span>
9259
 
 
9260          <code class="ruby">      it { expect { described_class.create! instrument: instrument }.to raise_error ActiveRecord::RecordInvalid }</code>
9261
 
9261        </li>
9262
 
 
9263        <li class="never" data-hits="" data-linenumber="24">
 
 
 
9266          <code class="ruby">    end</code>
9267
 
9267        </li>
9268
 
 
9269        <li class="never" data-hits="" data-linenumber="25">
 
 
 
9272          <code class="ruby"> </code>
9273
 
9273        </li>
9274
 
 
9275        <li class="covered" data-hits="1" data-linenumber="26">
 
9276          <span class="hits">1</span>
9277
 
 
9278          <code class="ruby">    context &#39;with StudyEvent and instrument&#39; do</code>
 
9279        </li>
9280
 
 
9281        <li class="covered" data-hits="1" data-linenumber="27">
 
9282          <span class="hits">1</span>
9283
 
 
9284          <code class="ruby">      it do </code>
9285
 
9285        </li>
9286
 
 
9287        <li class="covered" data-hits="2" data-linenumber="28">
 
9288          <span class="hits">2</span>
9289
 
 
9290          <code class="ruby">        expect { described_class.find_or_create_by instrument: instrument, study_event: study_event }.not_to raise_error</code>
9291
 
9291        </li>
9292
 
 
9293        <li class="never" data-hits="" data-linenumber="29">
 
 
 
9296          <code class="ruby">      end</code>
9297
 
9297        </li>
9298
 
 
9299        <li class="never" data-hits="" data-linenumber="30">
 
 
 
9302          <code class="ruby">    end</code>
9303
 
9303        </li>
9304
 
 
9305        <li class="never" data-hits="" data-linenumber="31">
 
 
 
9308          <code class="ruby">  end</code>
9309
 
9309        </li>
9310
 
 
9311        <li class="never" data-hits="" data-linenumber="32">
 
 
 
9314          <code class="ruby"></code>
9315
 
9315        </li>
9316
 
 
9317        <li class="covered" data-hits="1" data-linenumber="33">
 
9318          <span class="hits">1</span>
9319
 
 
9320          <code class="ruby">  describe &#39;#destroy!&#39; do</code>
 
9321        </li>
9322
 
 
9323        <li class="covered" data-hits="1" data-linenumber="34">
 
9324          <span class="hits">1</span>
9325
 
 
9326          <code class="ruby">    before :each do</code>
9327
 
9327        </li>
9328
 
 
9329        <li class="covered" data-hits="2" data-linenumber="35">
 
9330          <span class="hits">2</span>
9331
 
 
9332          <code class="ruby">      subject.destroy!</code>
9333
 
9333        </li>
9334
 
 
9335        <li class="never" data-hits="" data-linenumber="36">
 
 
 
9338          <code class="ruby">    end</code>
9339
 
9339        </li>
9340
 
 
9341        <li class="never" data-hits="" data-linenumber="37">
 
 
 
9344          <code class="ruby"></code>
9345
 
9345        </li>
9346
 
 
9347        <li class="covered" data-hits="2" data-linenumber="38">
 
9348          <span class="hits">2</span>
9349
 
 
9350          <code class="ruby">    it { expect(Instrument.exists?(instrument.id)).to be_truthy }</code>
9351
 
9351        </li>
9352
 
 
9353        <li class="never" data-hits="" data-linenumber="39">
 
 
 
9356          <code class="ruby">    </code>
9357
 
9357        </li>
9358
 
 
9359        <li class="covered" data-hits="2" data-linenumber="40">
 
9360          <span class="hits">2</span>
9361
 
 
9362          <code class="ruby">    it { expect(StudyEvent.exists?(study_event.id)).to be_truthy }</code>
9363
 
9363        </li>
9364
 
 
9365        <li class="never" data-hits="" data-linenumber="41">
 
 
 
9368          <code class="ruby">  end</code>
9369
 
9369        </li>
9370
 
 
9371        <li class="never" data-hits="" data-linenumber="42">
 
 
 
9374          <code class="ruby">  </code>
9375
 
9375        </li>
9376
 
 
9377        <li class="covered" data-hits="1" data-linenumber="43">
 
9378          <span class="hits">1</span>
9379
 
 
9380          <code class="ruby">  describe &#39;#to_s&#39; do</code>
 
9381        </li>
9382
 
 
9383        <li class="covered" data-hits="1" data-linenumber="44">
 
9384          <span class="hits">1</span>
9385
 
 
9386          <code class="ruby">    it do </code>
9387
 
9387        </li>
9388
 
 
9389        <li class="covered" data-hits="1" data-linenumber="45">
 
9390          <span class="hits">1</span>
9391
 
 
9392          <code class="ruby">      expect(subject.class.where(study_event: study_event, instrument: instrument).first.to_s).to \</code>
9393
 
9393        </li>
9394
 
 
9395        <li class="never" data-hits="" data-linenumber="46">
 
 
 
9398          <code class="ruby">        eq(&quot;#{study_event} #{instrument}&quot;)</code>
 
9399        </li>
9400
 
 
9401        <li class="never" data-hits="" data-linenumber="47">
 
 
 
9404          <code class="ruby">    end</code>
9405
 
9405        </li>
9406
 
 
9407        <li class="never" data-hits="" data-linenumber="48">
 
 
 
9410          <code class="ruby">  end</code>
9411
 
9411        </li>
9412
 
 
9413        <li class="never" data-hits="" data-linenumber="49">
 
 
 
9416          <code class="ruby"></code>
9417
 
9417        </li>
9418
 
 
9419        <li class="covered" data-hits="1" data-linenumber="50">
 
9420          <span class="hits">1</span>
9421
 
 
9422          <code class="ruby">  describe &#39;#created_at today&#39; do</code>
 
9423        </li>
9424
 
 
9425        <li class="never" data-hits="" data-linenumber="51">
 
 
 
9428          <code class="ruby">    # expect record to be created within the last 5 minutes to check timestamp works</code>
 
9429        </li>
9430
 
 
9431        <li class="covered" data-hits="2" data-linenumber="52">
 
9432          <span class="hits">2</span>
9433
 
 
9434          <code class="ruby">    it { expect(Time.now - subject.created_at).to be &lt; 300 }</code>
9435
 
9435        </li>
9436
 
 
9437        <li class="never" data-hits="" data-linenumber="53">
 
 
 
9440          <code class="ruby">  end</code>
9441
 
9441        </li>
9442
 
 
9443        <li class="never" data-hits="" data-linenumber="54">
 
 
 
9446          <code class="ruby">end</code>
9447
 
9447        </li>
9448
 
 
9449    </ol>
9450
 
9450  </pre>
9451
 
9451</div>
9452
 
 
 
9454        <div class="source_table" id="373f58940560afa620022d1cd00e89e728b8cefe">
 
9455  <div class="header">
 
9456    <h3>spec/study_event_spec.rb</h3>
9457
 
9457    <h4><span class="green">100.0 %</span> covered</h4>
 
9458    <div>
 
9459      <b>21</b> relevant lines. 
9460
 
9460      <span class="green"><b>21</b> lines covered</span> and
 
9461      <span class="red"><b>0</b> lines missed.</span>
 
9462    </div>
9463
 
9463  </div>
9464
 
 
9465  <pre>
 
9466    <ol>
 
 
9468        <li class="never" data-hits="" data-linenumber="1">
 
 
 
9471          <code class="ruby"># frozen_string_literal: true</code>
 
9472        </li>
9473
 
 
9474        <li class="never" data-hits="" data-linenumber="2">
 
 
 
9477          <code class="ruby"></code>
9478
 
9478        </li>
9479
 
 
9480        <li class="covered" data-hits="1" data-linenumber="3">
 
9481          <span class="hits">1</span>
9482
 
 
9483          <code class="ruby">RSpec.describe StudyEvent, type: :model do</code>
9484
 
9484        </li>
9485
 
 
9486        <li class="covered" data-hits="3" data-linenumber="4">
 
9487          <span class="hits">3</span>
9488
 
 
9489          <code class="ruby">  subject { described_class.find_or_create_by! name: AppConstants::TEST_STUDY_EVENT, arm: arm }</code>
9490
 
9490        </li>
9491
 
 
9492        <li class="covered" data-hits="7" data-linenumber="5">
 
9493          <span class="hits">7</span>
9494
 
 
9495          <code class="ruby">  let!(:arm) { Arm.find_or_create_by! name: AppConstants::TEST_ARM, schedule: schedule, number: 1 }</code>
9496
 
9496        </li>
9497
 
 
9498        <li class="covered" data-hits="7" data-linenumber="6">
 
9499          <span class="hits">7</span>
9500
 
 
9501          <code class="ruby">  let!(:schedule) { Schedule.find_or_create_by! name: AppConstants::TEST_SCHEDULE, study: study }</code>
9502
 
9502        </li>
9503
 
 
9504        <li class="covered" data-hits="7" data-linenumber="7">
 
9505          <span class="hits">7</span>
9506
 
 
9507          <code class="ruby">  let!(:study) { TestFactory.test_study }</code>
9508
 
9508        </li>
9509
 
 
9510        <li class="never" data-hits="" data-linenumber="8">
 
 
 
9513          <code class="ruby"> </code>
9514
 
9514        </li>
9515
 
 
9516        <li class="covered" data-hits="1" data-linenumber="9">
 
9517          <span class="hits">1</span>
9518
 
 
9519          <code class="ruby">  describe &#39;.create!&#39; do</code>
 
9520        </li>
9521
 
 
9522        <li class="covered" data-hits="1" data-linenumber="10">
 
9523          <span class="hits">1</span>
9524
 
 
9525          <code class="ruby">    context &#39;without name or arm&#39; do</code>
 
9526        </li>
9527
 
 
9528        <li class="covered" data-hits="3" data-linenumber="11">
 
9529          <span class="hits">3</span>
9530
 
 
9531          <code class="ruby">      it { expect { described_class.create! }.to raise_error ActiveRecord::RecordInvalid }</code>
9532
 
9532        </li>
9533
 
 
9534        <li class="never" data-hits="" data-linenumber="12">
 
 
 
9537          <code class="ruby">    end  </code>
9538
 
9538        </li>
9539
 
 
9540        <li class="never" data-hits="" data-linenumber="13">
 
 
 
9543          <code class="ruby"></code>
9544
 
9544        </li>
9545
 
 
9546        <li class="covered" data-hits="1" data-linenumber="14">
 
9547          <span class="hits">1</span>
9548
 
 
9549          <code class="ruby">    context &#39;1 character name&#39; do</code>
 
9550        </li>
9551
 
 
9552        <li class="covered" data-hits="3" data-linenumber="15">
 
9553          <span class="hits">3</span>
9554
 
 
9555          <code class="ruby">      it { expect { described_class.create! name: &#39;a&#39;, arm: arm }.to raise_error ActiveRecord::RecordInvalid }</code>
 
9556        </li>
9557
 
 
9558        <li class="never" data-hits="" data-linenumber="16">
 
 
 
9561          <code class="ruby">    end</code>
9562
 
9562        </li>
9563
 
 
9564        <li class="never" data-hits="" data-linenumber="17">
 
 
 
9567          <code class="ruby">    </code>
9568
 
9568        </li>
9569
 
 
9570        <li class="covered" data-hits="1" data-linenumber="18">
 
9571          <span class="hits">1</span>
9572
 
 
9573          <code class="ruby">    context &#39;2+ character name and title&#39; do</code>
 
9574        </li>
9575
 
 
9576        <li class="covered" data-hits="3" data-linenumber="19">
 
9577          <span class="hits">3</span>
9578
 
 
9579          <code class="ruby">      it { expect { described_class.find_or_create_by! name: &#39;as&#39;, arm: arm }.to_not raise_error }</code>
 
9580        </li>
9581
 
 
9582        <li class="never" data-hits="" data-linenumber="20">
 
 
 
9585          <code class="ruby">    end</code>
9586
 
9586        </li>
9587
 
 
9588        <li class="never" data-hits="" data-linenumber="21">
 
 
 
9591          <code class="ruby"></code>
9592
 
9592        </li>
9593
 
 
9594        <li class="covered" data-hits="1" data-linenumber="22">
 
9595          <span class="hits">1</span>
9596
 
 
9597          <code class="ruby">    context &#39;has unique name&#39; do</code>
 
9598        </li>
9599
 
 
9600        <li class="covered" data-hits="1" data-linenumber="23">
 
9601          <span class="hits">1</span>
9602
 
 
9603          <code class="ruby">      it do</code>
9604
 
9604        </li>
9605
 
 
9606        <li class="covered" data-hits="1" data-linenumber="24">
 
9607          <span class="hits">1</span>
9608
 
 
9609          <code class="ruby">        rs = described_class.create! name: &#39;a12&#39;, arm: arm</code>
 
9610        </li>
9611
 
 
9612        <li class="covered" data-hits="2" data-linenumber="25">
 
9613          <span class="hits">2</span>
9614
 
 
9615          <code class="ruby">        expect { described_class.create! name: &#39;a12&#39;, arm: arm }.to raise_error ActiveRecord::RecordInvalid</code>
 
9616        </li>
9617
 
 
9618        <li class="covered" data-hits="1" data-linenumber="26">
 
9619          <span class="hits">1</span>
9620
 
 
9621          <code class="ruby">        rs.destroy!</code>
9622
 
9622        </li>
9623
 
 
9624        <li class="never" data-hits="" data-linenumber="27">
 
 
 
9627          <code class="ruby">      end</code>
9628
 
9628        </li>
9629
 
 
9630        <li class="never" data-hits="" data-linenumber="28">
 
 
 
9633          <code class="ruby">    end</code>
9634
 
9634        </li>
9635
 
 
9636        <li class="never" data-hits="" data-linenumber="29">
 
 
 
9639          <code class="ruby"></code>
9640
 
9640        </li>
9641
 
 
9642        <li class="covered" data-hits="1" data-linenumber="30">
 
9643          <span class="hits">1</span>
9644
 
 
9645          <code class="ruby">    describe &#39;#to_s&#39; do</code>
 
9646        </li>
9647
 
 
9648        <li class="covered" data-hits="2" data-linenumber="31">
 
9649          <span class="hits">2</span>
9650
 
 
9651          <code class="ruby">      it { expect(subject.to_s).to eq &quot;#{study} #{arm} #{AppConstants::TEST_STUDY_EVENT}&quot; }</code>
 
9652        </li>
9653
 
 
9654        <li class="never" data-hits="" data-linenumber="32">
 
 
 
9657          <code class="ruby">    end</code>
9658
 
9658        </li>
9659
 
 
9660        <li class="never" data-hits="" data-linenumber="33">
 
 
 
9663          <code class="ruby"></code>
9664
 
9664        </li>
9665
 
 
9666        <li class="covered" data-hits="1" data-linenumber="34">
 
9667          <span class="hits">1</span>
9668
 
 
9669          <code class="ruby">    describe &#39;#created_at today&#39; do</code>
 
9670        </li>
9671
 
 
9672        <li class="never" data-hits="" data-linenumber="35">
 
 
 
9675          <code class="ruby">      # expect record to be created within the last 5 minutes to check timestamp works</code>
 
9676        </li>
9677
 
 
9678        <li class="covered" data-hits="2" data-linenumber="36">
 
9679          <span class="hits">2</span>
9680
 
 
9681          <code class="ruby">      it { expect(Time.now - subject.created_at).to be &lt; 300 }</code>
9682
 
9682        </li>
9683
 
 
9684        <li class="never" data-hits="" data-linenumber="37">
 
 
 
9687          <code class="ruby">    end</code>
9688
 
9688        </li>
9689
 
 
9690        <li class="never" data-hits="" data-linenumber="38">
 
 
 
9693          <code class="ruby">  end</code>
9694
 
9694        </li>
9695
 
 
9696        <li class="never" data-hits="" data-linenumber="39">
 
 
 
9699          <code class="ruby">end</code>
9700
 
9700        </li>
9701
 
 
9702    </ol>
9703
 
9703  </pre>
9704
 
9704</div>
9705
 
 
 
9707        <div class="source_table" id="c1031e9cfa93e88c31771d48c7f028aa73ee1612">
 
9708  <div class="header">
 
9709    <h3>spec/study_spec.rb</h3>
9710
 
9710    <h4><span class="green">100.0 %</span> covered</h4>
 
9711    <div>
 
9712      <b>18</b> relevant lines. 
9713
 
9713      <span class="green"><b>18</b> lines covered</span> and
 
9714      <span class="red"><b>0</b> lines missed.</span>
 
9715    </div>
9716
 
9716  </div>
9717
 
 
9718  <pre>
 
9719    <ol>
 
 
9721        <li class="never" data-hits="" data-linenumber="1">
 
 
 
9724          <code class="ruby"># frozen_string_literal: true</code>
 
9725        </li>
9726
 
 
9727        <li class="never" data-hits="" data-linenumber="2">
 
 
 
9730          <code class="ruby"></code>
9731
 
9731        </li>
9732
 
 
9733        <li class="covered" data-hits="1" data-linenumber="3">
 
9734          <span class="hits">1</span>
9735
 
 
9736          <code class="ruby">RSpec.describe Study, type: :model do</code>
9737
 
9737        </li>
9738
 
 
9739        <li class="covered" data-hits="3" data-linenumber="4">
 
9740          <span class="hits">3</span>
9741
 
 
9742          <code class="ruby">  subject { TestFactory.test_study }</code>
9743
 
9743        </li>
9744
 
 
9745        <li class="never" data-hits="" data-linenumber="5">
 
 
 
9748          <code class="ruby"> </code>
9749
 
9749        </li>
9750
 
 
9751        <li class="covered" data-hits="1" data-linenumber="6">
 
9752          <span class="hits">1</span>
9753
 
 
9754          <code class="ruby">  describe &#39;.create!&#39; do</code>
 
9755        </li>
9756
 
 
9757        <li class="covered" data-hits="1" data-linenumber="7">
 
9758          <span class="hits">1</span>
9759
 
 
9760          <code class="ruby">    context &#39;without a name&#39; do</code>
 
9761        </li>
9762
 
 
9763        <li class="covered" data-hits="3" data-linenumber="8">
 
9764          <span class="hits">3</span>
9765
 
 
9766          <code class="ruby">      it { expect { described_class.create! }.to raise_error ActiveRecord::RecordInvalid }</code>
9767
 
9767        </li>
9768
 
 
9769        <li class="never" data-hits="" data-linenumber="9">
 
 
 
9772          <code class="ruby">    end  </code>
9773
 
9773        </li>
9774
 
 
9775        <li class="never" data-hits="" data-linenumber="10">
 
 
 
9778          <code class="ruby"></code>
9779
 
9779        </li>
9780
 
 
9781        <li class="covered" data-hits="1" data-linenumber="11">
 
9782          <span class="hits">1</span>
9783
 
 
9784          <code class="ruby">    context &#39;1 character name&#39; do</code>
 
9785        </li>
9786
 
 
9787        <li class="covered" data-hits="3" data-linenumber="12">
 
9788          <span class="hits">3</span>
9789
 
 
9790          <code class="ruby">      it { expect { described_class.create! name: &#39;a&#39; }.to raise_error ActiveRecord::RecordInvalid }</code>
 
9791        </li>
9792
 
 
9793        <li class="never" data-hits="" data-linenumber="13">
 
 
 
9796          <code class="ruby">    end</code>
9797
 
9797        </li>
9798
 
 
9799        <li class="never" data-hits="" data-linenumber="14">
 
 
 
9802          <code class="ruby">    </code>
9803
 
9803        </li>
9804
 
 
9805        <li class="covered" data-hits="1" data-linenumber="15">
 
9806          <span class="hits">1</span>
9807
 
 
9808          <code class="ruby">    context &#39;2+ character name and title&#39; do</code>
 
9809        </li>
9810
 
 
9811        <li class="covered" data-hits="3" data-linenumber="16">
 
9812          <span class="hits">3</span>
9813
 
 
9814          <code class="ruby">      it { expect { described_class.find_or_create_by! name: &#39;as&#39; }.to_not raise_error }</code>
 
9815        </li>
9816
 
 
9817        <li class="never" data-hits="" data-linenumber="17">
 
 
 
9820          <code class="ruby">    end</code>
9821
 
9821        </li>
9822
 
 
9823        <li class="never" data-hits="" data-linenumber="18">
 
 
 
9826          <code class="ruby"></code>
9827
 
9827        </li>
9828
 
 
9829        <li class="covered" data-hits="1" data-linenumber="19">
 
9830          <span class="hits">1</span>
9831
 
 
9832          <code class="ruby">    context &#39;has unique name&#39; do</code>
 
9833        </li>
9834
 
 
9835        <li class="covered" data-hits="1" data-linenumber="20">
 
9836          <span class="hits">1</span>
9837
 
 
9838          <code class="ruby">      it do</code>
9839
 
9839        </li>
9840
 
 
9841        <li class="covered" data-hits="1" data-linenumber="21">
 
9842          <span class="hits">1</span>
9843
 
 
9844          <code class="ruby">        rs = described_class.create! name: &#39;a12&#39;</code>
 
9845        </li>
9846
 
 
9847        <li class="covered" data-hits="2" data-linenumber="22">
 
9848          <span class="hits">2</span>
9849
 
 
9850          <code class="ruby">        expect { described_class.create! name: &#39;a12&#39; }.to raise_error ActiveRecord::RecordInvalid</code>
 
9851        </li>
9852
 
 
9853        <li class="covered" data-hits="1" data-linenumber="23">
 
9854          <span class="hits">1</span>
9855
 
 
9856          <code class="ruby">        rs.destroy!</code>
9857
 
9857        </li>
9858
 
 
9859        <li class="never" data-hits="" data-linenumber="24">
 
 
 
9862          <code class="ruby">      end</code>
9863
 
9863        </li>
9864
 
 
9865        <li class="never" data-hits="" data-linenumber="25">
 
 
 
9868          <code class="ruby">    end</code>
9869
 
9869        </li>
9870
 
 
9871        <li class="never" data-hits="" data-linenumber="26">
 
 
 
9874          <code class="ruby"></code>
9875
 
9875        </li>
9876
 
 
9877        <li class="covered" data-hits="1" data-linenumber="27">
 
9878          <span class="hits">1</span>
9879
 
 
9880          <code class="ruby">    describe &#39;#to_s&#39; do</code>
 
9881        </li>
9882
 
 
9883        <li class="covered" data-hits="2" data-linenumber="28">
 
9884          <span class="hits">2</span>
9885
 
 
9886          <code class="ruby">      it { expect(subject.to_s).to eq AppConstants::TEST_STUDY }</code>
9887
 
9887        </li>
9888
 
 
9889        <li class="never" data-hits="" data-linenumber="29">
 
 
 
9892          <code class="ruby">    end</code>
9893
 
9893        </li>
9894
 
 
9895        <li class="never" data-hits="" data-linenumber="30">
 
 
 
9898          <code class="ruby"></code>
9899
 
9899        </li>
9900
 
 
9901        <li class="covered" data-hits="1" data-linenumber="31">
 
9902          <span class="hits">1</span>
9903
 
 
9904          <code class="ruby">    describe &#39;#created_at today&#39; do</code>
 
9905        </li>
9906
 
 
9907        <li class="never" data-hits="" data-linenumber="32">
 
 
 
9910          <code class="ruby">      # expect record to be created within the last 5 minutes to check timestamp works</code>
 
9911        </li>
9912
 
 
9913        <li class="covered" data-hits="2" data-linenumber="33">
 
9914          <span class="hits">2</span>
9915
 
 
9916          <code class="ruby">      it { expect(Time.now - subject.created_at).to be &lt; 300 }</code>
9917
 
9917        </li>
9918
 
 
9919        <li class="never" data-hits="" data-linenumber="34">
 
 
 
9922          <code class="ruby">    end</code>
9923
 
9923        </li>
9924
 
 
9925        <li class="never" data-hits="" data-linenumber="35">
 
 
 
9928          <code class="ruby">  end</code>
9929
 
9929        </li>
9930
 
 
9931        <li class="never" data-hits="" data-linenumber="36">
 
 
 
9934          <code class="ruby">end</code>
9935
 
9935        </li>
9936
 
 
9937    </ol>
9938
 
9938  </pre>
9939
 
9939</div>
9940
 
 
 
9942        <div class="source_table" id="96719dae9095d0a6031e9b71e3391eb41f566618">
 
9943  <div class="header">
 
9944    <h3>spec/survey_spec.rb</h3>
9945
 
9945    <h4><span class="green">100.0 %</span> covered</h4>
 
9946    <div>
 
9947      <b>41</b> relevant lines. 
9948
 
9948      <span class="green"><b>41</b> lines covered</span> and
 
9949      <span class="red"><b>0</b> lines missed.</span>
 
9950    </div>
9951
 
9951  </div>
9952
 
 
9953  <pre>
 
9954    <ol>
 
 
9956        <li class="never" data-hits="" data-linenumber="1">
 
 
 
9959          <code class="ruby"># frozen_string_literal: true</code>
 
9960        </li>
9961
 
 
9962        <li class="never" data-hits="" data-linenumber="2">
 
 
 
9965          <code class="ruby"></code>
9966
 
9966        </li>
9967
 
 
9968        <li class="covered" data-hits="1" data-linenumber="3">
 
9969          <span class="hits">1</span>
9970
 
 
9971          <code class="ruby">require &#39;./models/init&#39;</code>
 
9972        </li>
9973
 
 
9974        <li class="never" data-hits="" data-linenumber="4">
 
 
 
9977          <code class="ruby"></code>
9978
 
9978        </li>
9979
 
 
9980        <li class="covered" data-hits="1" data-linenumber="5">
 
9981          <span class="hits">1</span>
9982
 
 
9983          <code class="ruby">RSpec.describe Survey do</code>
9984
 
9984        </li>
9985
 
 
9986        <li class="covered" data-hits="2" data-linenumber="6">
 
9987          <span class="hits">2</span>
9988
 
 
9989          <code class="ruby">  subject { TestFactory.test_survey }</code>
9990
 
9990        </li>
9991
 
 
9992        <li class="never" data-hits="" data-linenumber="7">
 
 
 
9995          <code class="ruby"></code>
9996
 
9996        </li>
9997
 
 
9998        <li class="covered" data-hits="1" data-linenumber="8">
 
 9999          <span class="hits">1</span>
10000
 
 
10001          <code class="ruby">  describe &#39;.create!&#39; do</code>
 
10002        </li>
10003
 
 
10004        <li class="covered" data-hits="1" data-linenumber="9">
 
10005          <span class="hits">1</span>
10006
 
 
10007          <code class="ruby">    it &#39;without name&#39; do</code>
 
10008        </li>
10009
 
 
10010        <li class="covered" data-hits="2" data-linenumber="10">
 
10011          <span class="hits">2</span>
10012
 
 
10013          <code class="ruby">      expect { described_class.create! }.to raise_error ActiveRecord::RecordInvalid</code>
10014
 
10014        </li>
10015
 
 
10016        <li class="never" data-hits="" data-linenumber="11">
 
 
 
10019          <code class="ruby">    end</code>
10020
 
10020        </li>
10021
 
 
10022        <li class="never" data-hits="" data-linenumber="12">
 
 
 
10025          <code class="ruby"></code>
10026
 
10026        </li>
10027
 
 
10028        <li class="covered" data-hits="1" data-linenumber="13">
 
10029          <span class="hits">1</span>
10030
 
 
10031          <code class="ruby">    it &#39;1 character name&#39; do</code>
 
10032        </li>
10033
 
 
10034        <li class="covered" data-hits="2" data-linenumber="14">
 
10035          <span class="hits">2</span>
10036
 
 
10037          <code class="ruby">      expect { described_class.create!(name: &#39;a&#39;) }.to raise_error ActiveRecord::RecordInvalid</code>
 
10038        </li>
10039
 
 
10040        <li class="never" data-hits="" data-linenumber="15">
 
 
 
10043          <code class="ruby">    end</code>
10044
 
10044        </li>
10045
 
 
10046        <li class="never" data-hits="" data-linenumber="16">
 
 
 
10049          <code class="ruby"></code>
10050
 
10050        </li>
10051
 
 
10052        <li class="covered" data-hits="1" data-linenumber="17">
 
10053          <span class="hits">1</span>
10054
 
 
10055          <code class="ruby">    it &#39;2+ character name&#39; do</code>
 
10056        </li>
10057
 
 
10058        <li class="covered" data-hits="2" data-linenumber="18">
 
10059          <span class="hits">2</span>
10060
 
 
10061          <code class="ruby">      expect { described_class.find_or_create_by!(name: &#39;as&#39;) }.not_to raise_error</code>
 
10062        </li>
10063
 
 
10064        <li class="never" data-hits="" data-linenumber="19">
 
 
 
10067          <code class="ruby">    end</code>
10068
 
10068        </li>
10069
 
 
10070        <li class="never" data-hits="" data-linenumber="20">
 
 
 
10073          <code class="ruby"></code>
10074
 
10074        </li>
10075
 
 
10076        <li class="covered" data-hits="1" data-linenumber="21">
 
10077          <span class="hits">1</span>
10078
 
 
10079          <code class="ruby">    it &#39;with duplicate name&#39; do</code>
 
10080        </li>
10081
 
 
10082        <li class="covered" data-hits="2" data-linenumber="22">
 
10083          <span class="hits">2</span>
10084
 
 
10085          <code class="ruby">      expect { Survey.create!(name: AppConstants::TEST_SURVEY) }.to raise_error ActiveRecord::RecordInvalid</code>
10086
 
10086        </li>
10087
 
 
10088        <li class="never" data-hits="" data-linenumber="23">
 
 
 
10091          <code class="ruby">    end</code>
10092
 
10092        </li>
10093
 
 
10094        <li class="never" data-hits="" data-linenumber="24">
 
 
 
10097          <code class="ruby">  end</code>
10098
 
10098        </li>
10099
 
 
10100        <li class="never" data-hits="" data-linenumber="25">
 
 
 
10103          <code class="ruby"></code>
10104
 
10104        </li>
10105
 
 
10106        <li class="covered" data-hits="1" data-linenumber="26">
 
10107          <span class="hits">1</span>
10108
 
 
10109          <code class="ruby">  describe &#39;.list_tests&#39; do</code>
 
10110        </li>
10111
 
 
10112        <li class="covered" data-hits="1" data-linenumber="27">
 
10113          <span class="hits">1</span>
10114
 
 
10115          <code class="ruby">    it do</code>
10116
 
10116        </li>
10117
 
 
10118        <li class="covered" data-hits="1" data-linenumber="28">
 
10119          <span class="hits">1</span>
10120
 
 
10121          <code class="ruby">      described_class.find_or_create_by! name: &#39;Test Survey&#39;</code>
 
10122        </li>
10123
 
 
10124        <li class="covered" data-hits="1" data-linenumber="29">
 
10125          <span class="hits">1</span>
10126
 
 
10127          <code class="ruby">      described_class.find_or_create_by! name: &#39;Test&#39;</code>
 
10128        </li>
10129
 
 
10130        <li class="covered" data-hits="1" data-linenumber="30">
 
10131          <span class="hits">1</span>
10132
 
 
10133          <code class="ruby">      expect(described_class.list_tests).to include &#39;Test Survey Test&#39;</code>
 
10134        </li>
10135
 
 
10136        <li class="never" data-hits="" data-linenumber="31">
 
 
 
10139          <code class="ruby">    end </code>
10140
 
10140        </li>
10141
 
 
10142        <li class="never" data-hits="" data-linenumber="32">
 
 
 
10145          <code class="ruby">  end</code>
10146
 
10146        </li>
10147
 
 
10148        <li class="never" data-hits="" data-linenumber="33">
 
 
 
10151          <code class="ruby"></code>
10152
 
10152        </li>
10153
 
 
10154        <li class="covered" data-hits="1" data-linenumber="34">
 
10155          <span class="hits">1</span>
10156
 
 
10157          <code class="ruby">  describe &#39;.list_active_tests&#39; do</code>
 
10158        </li>
10159
 
 
10160        <li class="covered" data-hits="1" data-linenumber="35">
 
10161          <span class="hits">1</span>
10162
 
 
10163          <code class="ruby">    it do</code>
10164
 
10164        </li>
10165
 
 
10166        <li class="covered" data-hits="1" data-linenumber="36">
 
10167          <span class="hits">1</span>
10168
 
 
10169          <code class="ruby">      described_class.find_or_create_by! name: &#39;Test Survey active&#39;</code>
 
10170        </li>
10171
 
 
10172        <li class="covered" data-hits="1" data-linenumber="37">
 
10173          <span class="hits">1</span>
10174
 
 
10175          <code class="ruby">      described_class.find_or_create_by! name: &#39;Test inactive&#39;, is_active: false</code>
 
10176        </li>
10177
 
 
10178        <li class="covered" data-hits="1" data-linenumber="38">
 
10179          <span class="hits">1</span>
10180
 
 
10181          <code class="ruby">      expect(described_class.list_active_tests).to include &#39;Test Survey Test Test Survey active&#39;</code>
 
10182        </li>
10183
 
 
10184        <li class="never" data-hits="" data-linenumber="39">
 
 
 
10187          <code class="ruby">    end </code>
10188
 
10188        </li>
10189
 
 
10190        <li class="never" data-hits="" data-linenumber="40">
 
 
 
10193          <code class="ruby">  end</code>
10194
 
10194        </li>
10195
 
 
10196        <li class="never" data-hits="" data-linenumber="41">
 
 
 
10199          <code class="ruby"></code>
10200
 
10200        </li>
10201
 
 
10202        <li class="covered" data-hits="1" data-linenumber="42">
 
10203          <span class="hits">1</span>
10204
 
 
10205          <code class="ruby">  describe &#39;#to_s&#39; do</code>
 
10206        </li>
10207
 
 
10208        <li class="covered" data-hits="1" data-linenumber="43">
 
10209          <span class="hits">1</span>
10210
 
 
10211          <code class="ruby">    it do</code>
10212
 
10212        </li>
10213
 
 
10214        <li class="covered" data-hits="1" data-linenumber="44">
 
10215          <span class="hits">1</span>
10216
 
 
10217          <code class="ruby">      survey = described_class.find_or_create_by! name: &#39;Welcome!1&#39;</code>
 
10218        </li>
10219
 
 
10220        <li class="covered" data-hits="1" data-linenumber="45">
 
10221          <span class="hits">1</span>
10222
 
 
10223          <code class="ruby">      expect(survey.to_s).to eq &#39;Welcome!1&#39;</code>
 
10224        </li>
10225
 
 
10226        <li class="covered" data-hits="1" data-linenumber="46">
 
10227          <span class="hits">1</span>
10228
 
 
10229          <code class="ruby">      survey.destroy!</code>
10230
 
10230        </li>
10231
 
 
10232        <li class="never" data-hits="" data-linenumber="47">
 
 
 
10235          <code class="ruby">    end</code>
10236
 
10236        </li>
10237
 
 
10238        <li class="never" data-hits="" data-linenumber="48">
 
 
 
10241          <code class="ruby">  end </code>
10242
 
10242        </li>
10243
 
 
10244        <li class="never" data-hits="" data-linenumber="49">
 
 
 
10247          <code class="ruby"></code>
10248
 
10248        </li>
10249
 
 
10250        <li class="covered" data-hits="1" data-linenumber="50">
 
10251          <span class="hits">1</span>
10252
 
 
10253          <code class="ruby">  describe &#39;#destroy!&#39; do</code>
 
10254        </li>
10255
 
 
10256        <li class="covered" data-hits="1" data-linenumber="51">
 
10257          <span class="hits">1</span>
10258
 
 
10259          <code class="ruby">    it &#39;destroys assessments&#39; do</code>
 
10260        </li>
10261
 
 
10262        <li class="covered" data-hits="1" data-linenumber="52">
 
10263          <span class="hits">1</span>
10264
 
 
10265          <code class="ruby">      survey = described_class.find_or_create_by! name: Faker::Name.first_name</code>
10266
 
10266        </li>
10267
 
 
10268        <li class="covered" data-hits="1" data-linenumber="53">
 
10269          <span class="hits">1</span>
10270
 
 
10271          <code class="ruby">      user = User.find_or_create_by! username: Faker::Internet.unique.user_name(5..20)</code>
10272
 
10272        </li>
10273
 
 
10274        <li class="covered" data-hits="1" data-linenumber="54">
 
10275          <span class="hits">1</span>
10276
 
 
10277          <code class="ruby">      vt = Visit.find_or_create_by! user: user, name: &#39;Visit 27&#39;, survey: survey</code>
 
10278        </li>
10279
 
 
10280        <li class="covered" data-hits="1" data-linenumber="55">
 
10281          <span class="hits">1</span>
10282
 
 
10283          <code class="ruby">      assessment = Assessment.find_or_create_by! visit: vt </code>
10284
 
10284        </li>
10285
 
 
10286        <li class="covered" data-hits="1" data-linenumber="56">
 
10287          <span class="hits">1</span>
10288
 
 
10289          <code class="ruby">      another_assessment = Assessment.create! visit: vt, order_number: 2</code>
10290
 
10290        </li>
10291
 
 
10292        <li class="covered" data-hits="1" data-linenumber="57">
 
10293          <span class="hits">1</span>
10294
 
 
10295          <code class="ruby">      survey.visits.concat(vt)</code>
10296
 
10296        </li>
10297
 
 
10298        <li class="covered" data-hits="1" data-linenumber="58">
 
10299          <span class="hits">1</span>
10300
 
 
10301          <code class="ruby">      vt.assessments.concat(assessment)</code>
10302
 
10302        </li>
10303
 
 
10304        <li class="covered" data-hits="1" data-linenumber="59">
 
10305          <span class="hits">1</span>
10306
 
 
10307          <code class="ruby">      vt.assessments.concat(another_assessment)</code>
10308
 
10308        </li>
10309
 
 
10310        <li class="covered" data-hits="1" data-linenumber="60">
 
10311          <span class="hits">1</span>
10312
 
 
10313          <code class="ruby">      expect(survey.assessments.count).to eq(2)  </code>
10314
 
10314        </li>
10315
 
 
10316        <li class="covered" data-hits="1" data-linenumber="61">
 
10317          <span class="hits">1</span>
10318
 
 
10319          <code class="ruby">      survey.destroy!</code>
10320
 
10320        </li>
10321
 
 
10322        <li class="never" data-hits="" data-linenumber="62">
 
 
 
10325          <code class="ruby">    end</code>
10326
 
10326        </li>
10327
 
 
10328        <li class="never" data-hits="" data-linenumber="63">
 
 
 
10331          <code class="ruby">  end</code>
10332
 
10332        </li>
10333
 
 
10334        <li class="never" data-hits="" data-linenumber="64">
 
 
 
10337          <code class="ruby"></code>
10338
 
10338        </li>
10339
 
 
10340        <li class="covered" data-hits="1" data-linenumber="65">
 
10341          <span class="hits">1</span>
10342
 
 
10343          <code class="ruby">  describe &#39;#created_at today&#39; do</code>
 
10344        </li>
10345
 
 
10346        <li class="never" data-hits="" data-linenumber="66">
 
 
 
10349          <code class="ruby">    # expect record to be created within the last 5 minutes to check timestamp works</code>
 
10350        </li>
10351
 
 
10352        <li class="covered" data-hits="2" data-linenumber="67">
 
10353          <span class="hits">2</span>
10354
 
 
10355          <code class="ruby">    it { expect(Time.now - subject.created_at).to be &lt; 300 }</code>
10356
 
10356        </li>
10357
 
 
10358        <li class="never" data-hits="" data-linenumber="68">
 
 
 
10361          <code class="ruby">  end</code>
10362
 
10362        </li>
10363
 
 
10364        <li class="never" data-hits="" data-linenumber="69">
 
 
 
10367          <code class="ruby">end</code>
10368
 
10368        </li>
10369
 
 
10370    </ol>
10371
 
10371  </pre>
10372
 
10372</div>
10373
 
 
 
10375        <div class="source_table" id="32deb9596e94ea87afe965e05dac2003eb172634">
 
10376  <div class="header">
 
10377    <h3>spec/user_spec.rb</h3>
10378
 
10378    <h4><span class="green">100.0 %</span> covered</h4>
 
10379    <div>
 
10380      <b>34</b> relevant lines. 
10381
 
10381      <span class="green"><b>34</b> lines covered</span> and
 
10382      <span class="red"><b>0</b> lines missed.</span>
 
10383    </div>
10384
 
10384  </div>
10385
 
 
10386  <pre>
 
10387    <ol>
 
 
10389        <li class="never" data-hits="" data-linenumber="1">
 
 
 
10392          <code class="ruby"># frozen_string_literal: true</code>
 
10393        </li>
10394
 
 
10395        <li class="never" data-hits="" data-linenumber="2">
 
 
 
10398          <code class="ruby"></code>
10399
 
10399        </li>
10400
 
 
10401        <li class="covered" data-hits="1" data-linenumber="3">
 
10402          <span class="hits">1</span>
10403
 
 
10404          <code class="ruby">require &#39;./models/init&#39;</code>
 
10405        </li>
10406
 
 
10407        <li class="never" data-hits="" data-linenumber="4">
 
 
 
10410          <code class="ruby"></code>
10411
 
10411        </li>
10412
 
 
10413        <li class="covered" data-hits="1" data-linenumber="5">
 
10414          <span class="hits">1</span>
10415
 
 
10416          <code class="ruby">RSpec.describe User, type: :model do</code>
10417
 
10417        </li>
10418
 
 
10419        <li class="covered" data-hits="2" data-linenumber="6">
 
10420          <span class="hits">2</span>
10421
 
 
10422          <code class="ruby">  subject { TestFactory.test_user }</code>
10423
 
10423        </li>
10424
 
 
10425        <li class="never" data-hits="" data-linenumber="7">
 
 
 
10428          <code class="ruby"></code>
10429
 
10429        </li>
10430
 
 
10431        <li class="covered" data-hits="1" data-linenumber="8">
 
10432          <span class="hits">1</span>
10433
 
 
10434          <code class="ruby">  describe &#39;.authenticate&#39; do</code>
 
10435        </li>
10436
 
 
10437        <li class="covered" data-hits="1" data-linenumber="9">
 
10438          <span class="hits">1</span>
10439
 
 
10440          <code class="ruby">    it &#39;creates a user if one does not exist&#39; do</code>
 
10441        </li>
10442
 
 
10443        <li class="covered" data-hits="4" data-linenumber="10">
 
10444          <span class="hits">4</span>
10445
 
 
10446          <code class="ruby">      expect { described_class.authenticate(Faker::Internet.unique.user_name(5..20)) }.to change { User.count }.by(1)</code>
10447
 
10447        </li>
10448
 
 
10449        <li class="never" data-hits="" data-linenumber="11">
 
 
 
10452          <code class="ruby">    end</code>
10453
 
10453        </li>
10454
 
 
10455        <li class="never" data-hits="" data-linenumber="12">
 
 
 
10458          <code class="ruby"></code>
10459
 
10459        </li>
10460
 
 
10461        <li class="covered" data-hits="1" data-linenumber="13">
 
10462          <span class="hits">1</span>
10463
 
 
10464          <code class="ruby">    it &#39;retrieves a user if name and access token exists&#39; do</code>
 
10465        </li>
10466
 
 
10467        <li class="covered" data-hits="1" data-linenumber="14">
 
10468          <span class="hits">1</span>
10469
 
 
10470          <code class="ruby">      timmy = create(:timmy)</code>
10471
 
10471        </li>
10472
 
 
10473        <li class="covered" data-hits="4" data-linenumber="15">
 
10474          <span class="hits">4</span>
10475
 
 
10476          <code class="ruby">      expect { described_class.authenticate(timmy.username) }.not_to(change { described_class.count })</code>
10477
 
10477        </li>
10478
 
 
10479        <li class="covered" data-hits="1" data-linenumber="16">
 
10480          <span class="hits">1</span>
10481
 
 
10482          <code class="ruby">      expect(described_class.authenticate(timmy.username).username).to eq timmy.username</code>
10483
 
10483        </li>
10484
 
 
10485        <li class="covered" data-hits="1" data-linenumber="17">
 
10486          <span class="hits">1</span>
10487
 
 
10488          <code class="ruby">      expect(described_class.authenticate(timmy.username).access_token).to eq timmy.access_token</code>
10489
 
10489        </li>
10490
 
 
10491        <li class="never" data-hits="" data-linenumber="18">
 
 
 
10494          <code class="ruby">    end</code>
10495
 
10495        </li>
10496
 
 
10497        <li class="never" data-hits="" data-linenumber="19">
 
 
 
10500          <code class="ruby"></code>
10501
 
10501        </li>
10502
 
 
10503        <li class="covered" data-hits="1" data-linenumber="20">
 
10504          <span class="hits">1</span>
10505
 
 
10506          <code class="ruby">    it &#39;does not create a user without a username&#39; do</code>
 
10507        </li>
10508
 
 
10509        <li class="covered" data-hits="4" data-linenumber="21">
 
10510          <span class="hits">4</span>
10511
 
 
10512          <code class="ruby">      expect { described_class.authenticate(&#39;&#39;) }.to change { described_class.count }.by(0)</code>
 
10513        </li>
10514
 
 
10515        <li class="never" data-hits="" data-linenumber="22">
 
 
 
10518          <code class="ruby">    end</code>
10519
 
10519        </li>
10520
 
 
10521        <li class="never" data-hits="" data-linenumber="23">
 
 
 
10524          <code class="ruby"></code>
10525
 
10525        </li>
10526
 
 
10527        <li class="covered" data-hits="1" data-linenumber="24">
 
10528          <span class="hits">1</span>
10529
 
 
10530          <code class="ruby">    it &#39;does not create a user with a name shorter than 5 characters&#39; do</code>
 
10531        </li>
10532
 
 
10533        <li class="covered" data-hits="4" data-linenumber="25">
 
10534          <span class="hits">4</span>
10535
 
 
10536          <code class="ruby">      expect { described_class.authenticate(&#39;Lisa&#39;) }.to change { described_class.count }.by(0)</code>
 
10537        </li>
10538
 
 
10539        <li class="never" data-hits="" data-linenumber="26">
 
 
 
10542          <code class="ruby">    end</code>
10543
 
10543        </li>
10544
 
 
10545        <li class="never" data-hits="" data-linenumber="27">
 
 
 
10548          <code class="ruby">  end</code>
10549
 
10549        </li>
10550
 
 
10551        <li class="never" data-hits="" data-linenumber="28">
 
 
 
10554          <code class="ruby"></code>
10555
 
10555        </li>
10556
 
 
10557        <li class="covered" data-hits="1" data-linenumber="29">
 
10558          <span class="hits">1</span>
10559
 
 
10560          <code class="ruby">  describe &#39;Saving to a database&#39; do</code>
 
10561        </li>
10562
 
 
10563        <li class="covered" data-hits="1" data-linenumber="30">
 
10564          <span class="hits">1</span>
10565
 
 
10566          <code class="ruby">    it &#39;starts out unpersisted&#39; do</code>
 
10567        </li>
10568
 
 
10569        <li class="covered" data-hits="1" data-linenumber="31">
 
10570          <span class="hits">1</span>
10571
 
 
10572          <code class="ruby">      user = described_class.new</code>
10573
 
10573        </li>
10574
 
 
10575        <li class="covered" data-hits="1" data-linenumber="32">
 
10576          <span class="hits">1</span>
10577
 
 
10578          <code class="ruby">      expect(user.id).to be_nil</code>
10579
 
10579        </li>
10580
 
 
10581        <li class="never" data-hits="" data-linenumber="33">
 
 
 
10584          <code class="ruby">    end</code>
10585
 
10585        </li>
10586
 
 
10587        <li class="never" data-hits="" data-linenumber="34">
 
 
 
10590          <code class="ruby"></code>
10591
 
10591        </li>
10592
 
 
10593        <li class="covered" data-hits="1" data-linenumber="35">
 
10594          <span class="hits">1</span>
10595
 
 
10596          <code class="ruby">    it &#39;can be persisted&#39; do</code>
 
10597        </li>
10598
 
 
10599        <li class="covered" data-hits="1" data-linenumber="36">
 
10600          <span class="hits">1</span>
10601
 
 
10602          <code class="ruby">      user = build(:timmy)</code>
10603
 
10603        </li>
10604
 
 
10605        <li class="covered" data-hits="1" data-linenumber="37">
 
10606          <span class="hits">1</span>
10607
 
 
10608          <code class="ruby">      user.save</code>
10609
 
10609        </li>
10610
 
 
10611        <li class="never" data-hits="" data-linenumber="38">
 
 
 
10614          <code class="ruby"></code>
10615
 
10615        </li>
10616
 
 
10617        <li class="covered" data-hits="1" data-linenumber="39">
 
10618          <span class="hits">1</span>
10619
 
 
10620          <code class="ruby">      persisted_user = described_class.find_by_username &#39;Timmy&#39;</code>
 
10621        </li>
10622
 
 
10623        <li class="covered" data-hits="1" data-linenumber="40">
 
10624          <span class="hits">1</span>
10625
 
 
10626          <code class="ruby">      expect(persisted_user.id).not_to be_nil</code>
10627
 
10627        </li>
10628
 
 
10629        <li class="covered" data-hits="1" data-linenumber="41">
 
10630          <span class="hits">1</span>
10631
 
 
10632          <code class="ruby">      expect(persisted_user.username).to eq &#39;Timmy&#39;</code>
 
10633        </li>
10634
 
 
10635        <li class="covered" data-hits="1" data-linenumber="42">
 
10636          <span class="hits">1</span>
10637
 
 
10638          <code class="ruby">      expect(persisted_user.access_token).to eq &#39;AccessToken&#39;</code>
 
10639        </li>
10640
 
 
10641        <li class="never" data-hits="" data-linenumber="43">
 
 
 
10644          <code class="ruby">    end</code>
10645
 
10645        </li>
10646
 
 
10647        <li class="never" data-hits="" data-linenumber="44">
 
 
 
10650          <code class="ruby"></code>
10651
 
10651        </li>
10652
 
 
10653        <li class="covered" data-hits="1" data-linenumber="45">
 
10654          <span class="hits">1</span>
10655
 
 
10656          <code class="ruby">    it &#39;has unique name&#39; do</code>
 
10657        </li>
10658
 
 
10659        <li class="covered" data-hits="4" data-linenumber="46">
 
10660          <span class="hits">4</span>
10661
 
 
10662          <code class="ruby">      expect { described_class.authenticate(&#39;Timmy&#39;) }.to change { described_class.count }.by(0)</code>
 
10663        </li>
10664
 
 
10665        <li class="never" data-hits="" data-linenumber="47">
 
 
 
10668          <code class="ruby">    end</code>
10669
 
10669        </li>
10670
 
 
10671        <li class="never" data-hits="" data-linenumber="48">
 
 
 
10674          <code class="ruby">  end</code>
10675
 
10675        </li>
10676
 
 
10677        <li class="never" data-hits="" data-linenumber="49">
 
 
 
10680          <code class="ruby"></code>
10681
 
10681        </li>
10682
 
 
10683        <li class="covered" data-hits="1" data-linenumber="50">
 
10684          <span class="hits">1</span>
10685
 
 
10686          <code class="ruby">  describe &#39;#to_s&#39; do</code>
 
10687        </li>
10688
 
 
10689        <li class="covered" data-hits="1" data-linenumber="51">
 
10690          <span class="hits">1</span>
10691
 
 
10692          <code class="ruby">    it do</code>
10693
 
10693        </li>
10694
 
 
10695        <li class="covered" data-hits="1" data-linenumber="52">
 
10696          <span class="hits">1</span>
10697
 
 
10698          <code class="ruby">      user = build(:timmy)</code>
10699
 
10699        </li>
10700
 
 
10701        <li class="covered" data-hits="1" data-linenumber="53">
 
10702          <span class="hits">1</span>
10703
 
 
10704          <code class="ruby">      expect(user.to_s).to eq(user.username) </code>
10705
 
10705        </li>
10706
 
 
10707        <li class="never" data-hits="" data-linenumber="54">
 
 
 
10710          <code class="ruby">    end</code>
10711
 
10711        </li>
10712
 
 
10713        <li class="never" data-hits="" data-linenumber="55">
 
 
 
10716          <code class="ruby">  end</code>
10717
 
10717        </li>
10718
 
 
10719        <li class="never" data-hits="" data-linenumber="56">
 
 
 
10722          <code class="ruby"></code>
10723
 
10723        </li>
10724
 
 
10725        <li class="covered" data-hits="1" data-linenumber="57">
 
10726          <span class="hits">1</span>
10727
 
 
10728          <code class="ruby">  describe &#39;#created_at today&#39; do</code>
 
10729        </li>
10730
 
 
10731        <li class="never" data-hits="" data-linenumber="58">
 
 
 
10734          <code class="ruby">    # expect record to be created within the last 5 minutes to check timestamp works</code>
 
10735        </li>
10736
 
 
10737        <li class="covered" data-hits="2" data-linenumber="59">
 
10738          <span class="hits">2</span>
10739
 
 
10740          <code class="ruby">    it { expect(Time.now - subject.created_at).to be &lt; 300 }</code>
10741
 
10741        </li>
10742
 
 
10743        <li class="never" data-hits="" data-linenumber="60">
 
 
 
10746          <code class="ruby">  end</code>
10747
 
10747        </li>
10748
 
 
10749        <li class="never" data-hits="" data-linenumber="61">
 
 
 
10752          <code class="ruby">end</code>
10753
 
10753        </li>
10754
 
 
10755    </ol>
10756
 
10756  </pre>
10757
 
10757</div>
10758
 
 
 
10760        <div class="source_table" id="9c4508e3e891915a571ba8a71876acb876b5e5fb">
 
10761  <div class="header">
 
10762    <h3>spec/user_survey_spec.rb</h3>
10763
 
10763    <h4><span class="green">100.0 %</span> covered</h4>
 
10764    <div>
 
10765      <b>25</b> relevant lines. 
10766
 
10766      <span class="green"><b>25</b> lines covered</span> and
 
10767      <span class="red"><b>0</b> lines missed.</span>
 
10768    </div>
10769
 
10769  </div>
10770
 
 
10771  <pre>
 
10772    <ol>
 
 
10774        <li class="never" data-hits="" data-linenumber="1">
 
 
 
10777          <code class="ruby"># frozen_string_literal: true</code>
 
10778        </li>
10779
 
 
10780        <li class="never" data-hits="" data-linenumber="2">
 
 
 
10783          <code class="ruby"></code>
10784
 
10784        </li>
10785
 
 
10786        <li class="covered" data-hits="1" data-linenumber="3">
 
10787          <span class="hits">1</span>
10788
 
 
10789          <code class="ruby">require &#39;./models/init&#39;</code>
 
10790        </li>
10791
 
 
10792        <li class="never" data-hits="" data-linenumber="4">
 
 
 
10795          <code class="ruby"></code>
10796
 
10796        </li>
10797
 
 
10798        <li class="covered" data-hits="1" data-linenumber="5">
 
10799          <span class="hits">1</span>
10800
 
 
10801          <code class="ruby">RSpec.describe UserSurvey, type: :model do</code>
10802
 
10802        </li>
10803
 
 
10804        <li class="covered" data-hits="9" data-linenumber="6">
 
10805          <span class="hits">9</span>
10806
 
 
10807          <code class="ruby">  subject { described_class.find_or_create_by user: user, survey: survey }</code>
10808
 
10808        </li>
10809
 
 
10810        <li class="covered" data-hits="9" data-linenumber="7">
 
10811          <span class="hits">9</span>
10812
 
 
10813          <code class="ruby">  let!(:survey) { TestFactory.test_survey }</code>
10814
 
10814        </li>
10815
 
 
10816        <li class="covered" data-hits="9" data-linenumber="8">
 
10817          <span class="hits">9</span>
10818
 
 
10819          <code class="ruby">  let!(:user) { TestFactory.test_user }</code>
10820
 
10820        </li>
10821
 
 
10822        <li class="never" data-hits="" data-linenumber="9">
 
 
 
10825          <code class="ruby">  </code>
10826
 
10826        </li>
10827
 
 
10828        <li class="covered" data-hits="1" data-linenumber="10">
 
10829          <span class="hits">1</span>
10830
 
 
10831          <code class="ruby">  describe &#39;.create!&#39; do</code>
 
10832        </li>
10833
 
 
10834        <li class="covered" data-hits="1" data-linenumber="11">
 
10835          <span class="hits">1</span>
10836
 
 
10837          <code class="ruby">    context &#39;no user or survey&#39; do</code>
 
10838        </li>
10839
 
 
10840        <li class="covered" data-hits="3" data-linenumber="12">
 
10841          <span class="hits">3</span>
10842
 
 
10843          <code class="ruby">      it { expect { subject.class.create! }.to raise_error ActiveRecord::RecordInvalid }</code>
10844
 
10844        </li>
10845
 
 
10846        <li class="never" data-hits="" data-linenumber="13">
 
 
 
10849          <code class="ruby">    end</code>
10850
 
10850        </li>
10851
 
 
10852        <li class="never" data-hits="" data-linenumber="14">
 
 
 
10855          <code class="ruby"></code>
10856
 
10856        </li>
10857
 
 
10858        <li class="covered" data-hits="1" data-linenumber="15">
 
10859          <span class="hits">1</span>
10860
 
 
10861          <code class="ruby">    context &#39;no user&#39; do</code>
 
10862        </li>
10863
 
 
10864        <li class="covered" data-hits="3" data-linenumber="16">
 
10865          <span class="hits">3</span>
10866
 
 
10867          <code class="ruby">      it { expect { subject.class.create! user: user }.to raise_error ActiveRecord::RecordInvalid }</code>
10868
 
10868        </li>
10869
 
 
10870        <li class="never" data-hits="" data-linenumber="17">
 
 
 
10873          <code class="ruby">    end</code>
10874
 
10874        </li>
10875
 
 
10876        <li class="never" data-hits="" data-linenumber="18">
 
 
 
10879          <code class="ruby"></code>
10880
 
10880        </li>
10881
 
 
10882        <li class="covered" data-hits="1" data-linenumber="19">
 
10883          <span class="hits">1</span>
10884
 
 
10885          <code class="ruby">    context &#39;no survey&#39; do</code>
 
10886        </li>
10887
 
 
10888        <li class="covered" data-hits="3" data-linenumber="20">
 
10889          <span class="hits">3</span>
10890
 
 
10891          <code class="ruby">      it { expect { subject.class.create! survey: survey }.to raise_error ActiveRecord::RecordInvalid }</code>
10892
 
10892        </li>
10893
 
 
10894        <li class="never" data-hits="" data-linenumber="21">
 
 
 
10897          <code class="ruby">    end</code>
10898
 
10898        </li>
10899
 
 
10900        <li class="never" data-hits="" data-linenumber="22">
 
 
 
10903          <code class="ruby"> </code>
10904
 
10904        </li>
10905
 
 
10906        <li class="covered" data-hits="1" data-linenumber="23">
 
10907          <span class="hits">1</span>
10908
 
 
10909          <code class="ruby">    context &#39;survey and user&#39; do</code>
 
10910        </li>
10911
 
 
10912        <li class="covered" data-hits="1" data-linenumber="24">
 
10913          <span class="hits">1</span>
10914
 
 
10915          <code class="ruby">      it do </code>
10916
 
10916        </li>
10917
 
 
10918        <li class="covered" data-hits="2" data-linenumber="25">
 
10919          <span class="hits">2</span>
10920
 
 
10921          <code class="ruby">        expect { subject.class.find_or_create_by! user: user, survey: survey }.not_to raise_error</code>
10922
 
10922        </li>
10923
 
 
10924        <li class="never" data-hits="" data-linenumber="26">
 
 
 
10927          <code class="ruby">      end</code>
10928
 
10928        </li>
10929
 
 
10930        <li class="never" data-hits="" data-linenumber="27">
 
 
 
10933          <code class="ruby">    end</code>
10934
 
10934        </li>
10935
 
 
10936        <li class="never" data-hits="" data-linenumber="28">
 
 
 
10939          <code class="ruby">  end</code>
10940
 
10940        </li>
10941
 
 
10942        <li class="never" data-hits="" data-linenumber="29">
 
 
 
10945          <code class="ruby"></code>
10946
 
10946        </li>
10947
 
 
10948        <li class="covered" data-hits="1" data-linenumber="30">
 
10949          <span class="hits">1</span>
10950
 
 
10951          <code class="ruby">  describe &#39;#destroy!&#39; do</code>
 
10952        </li>
10953
 
 
10954        <li class="covered" data-hits="1" data-linenumber="31">
 
10955          <span class="hits">1</span>
10956
 
 
10957          <code class="ruby">    before :each do</code>
10958
 
10958        </li>
10959
 
 
10960        <li class="covered" data-hits="2" data-linenumber="32">
 
10961          <span class="hits">2</span>
10962
 
 
10963          <code class="ruby">      subject.destroy!</code>
10964
 
10964        </li>
10965
 
 
10966        <li class="never" data-hits="" data-linenumber="33">
 
 
 
10969          <code class="ruby">    end</code>
10970
 
10970        </li>
10971
 
 
10972        <li class="never" data-hits="" data-linenumber="34">
 
 
 
10975          <code class="ruby"></code>
10976
 
10976        </li>
10977
 
 
10978        <li class="covered" data-hits="2" data-linenumber="35">
 
10979          <span class="hits">2</span>
10980
 
 
10981          <code class="ruby">    it { expect(User.exists?(user.id)).to be_truthy }</code>
10982
 
10982        </li>
10983
 
 
10984        <li class="never" data-hits="" data-linenumber="36">
 
 
 
10987          <code class="ruby"></code>
10988
 
10988        </li>
10989
 
 
10990        <li class="covered" data-hits="2" data-linenumber="37">
 
10991          <span class="hits">2</span>
10992
 
 
10993          <code class="ruby">    it { expect(Survey.exists?(survey.id)).to be_truthy }</code>
10994
 
10994        </li>
10995
 
 
10996        <li class="never" data-hits="" data-linenumber="38">
 
 
 
10999          <code class="ruby">  end</code>
11000
 
11000        </li>
11001
 
 
11002        <li class="never" data-hits="" data-linenumber="39">
 
 
 
11005          <code class="ruby"></code>
11006
 
11006        </li>
11007
 
 
11008        <li class="covered" data-hits="1" data-linenumber="40">
 
11009          <span class="hits">1</span>
11010
 
 
11011          <code class="ruby">  describe &#39;#to_s&#39; do</code>
 
11012        </li>
11013
 
 
11014        <li class="covered" data-hits="1" data-linenumber="41">
 
11015          <span class="hits">1</span>
11016
 
 
11017          <code class="ruby">    it do</code>
11018
 
11018        </li>
11019
 
 
11020        <li class="covered" data-hits="1" data-linenumber="42">
 
11021          <span class="hits">1</span>
11022
 
 
11023          <code class="ruby">      expect(subject.class.where(user: user, survey: survey).first.to_s).to \</code>
11024
 
11024        </li>
11025
 
 
11026        <li class="never" data-hits="" data-linenumber="43">
 
 
 
11029          <code class="ruby">        eq(&quot;#{AppConstants::TEST_USER} #{AppConstants::TEST_SURVEY}&quot;)</code>
 
11030        </li>
11031
 
 
11032        <li class="never" data-hits="" data-linenumber="44">
 
 
 
11035          <code class="ruby">    end</code>
11036
 
11036        </li>
11037
 
 
11038        <li class="never" data-hits="" data-linenumber="45">
 
 
 
11041          <code class="ruby">  end</code>
11042
 
11042        </li>
11043
 
 
11044        <li class="never" data-hits="" data-linenumber="46">
 
 
 
11047          <code class="ruby"></code>
11048
 
11048        </li>
11049
 
 
11050        <li class="covered" data-hits="1" data-linenumber="47">
 
11051          <span class="hits">1</span>
11052
 
 
11053          <code class="ruby">  describe &#39;#created_at today&#39; do</code>
 
11054        </li>
11055
 
 
11056        <li class="never" data-hits="" data-linenumber="48">
 
 
 
11059          <code class="ruby">    # expect record to be created within the last 5 minutes to check timestamp works</code>
 
11060        </li>
11061
 
 
11062        <li class="covered" data-hits="2" data-linenumber="49">
 
11063          <span class="hits">2</span>
11064
 
 
11065          <code class="ruby">    it { expect(Time.now - subject.created_at).to be &lt; 300 }</code>
11066
 
11066        </li>
11067
 
 
11068        <li class="never" data-hits="" data-linenumber="50">
 
 
 
11071          <code class="ruby">  end</code>
11072
 
11072        </li>
11073
 
 
11074        <li class="never" data-hits="" data-linenumber="51">
 
 
 
11077          <code class="ruby">end</code>
11078
 
11078        </li>
11079
 
 
11080    </ol>
11081
 
11081  </pre>
11082
 
11082</div>
11083
 
 
 
11085        <div class="source_table" id="a4a3b4c1a34a6a1fa51b9a49e4524914395eb07d">
 
11086  <div class="header">
 
11087    <h3>spec/visit_spec.rb</h3>
11088
 
11088    <h4><span class="green">100.0 %</span> covered</h4>
 
11089    <div>
 
11090      <b>48</b> relevant lines. 
11091
 
11091      <span class="green"><b>48</b> lines covered</span> and
 
11092      <span class="red"><b>0</b> lines missed.</span>
 
11093    </div>
11094
 
11094  </div>
11095
 
 
11096  <pre>
 
11097    <ol>
 
 
11099        <li class="never" data-hits="" data-linenumber="1">
 
 
 
11102          <code class="ruby"># frozen_string_literal: true</code>
 
11103        </li>
11104
 
 
11105        <li class="never" data-hits="" data-linenumber="2">
 
 
 
11108          <code class="ruby"></code>
11109
 
11109        </li>
11110
 
 
11111        <li class="covered" data-hits="1" data-linenumber="3">
 
11112          <span class="hits">1</span>
11113
 
 
11114          <code class="ruby">require &#39;./models/init&#39;</code>
 
11115        </li>
11116
 
 
11117        <li class="never" data-hits="" data-linenumber="4">
 
 
 
11120          <code class="ruby"></code>
11121
 
11121        </li>
11122
 
 
11123        <li class="covered" data-hits="1" data-linenumber="5">
 
11124          <span class="hits">1</span>
11125
 
 
11126          <code class="ruby">RSpec.describe Visit, type: :model do </code>
11127
 
11127        </li>
11128
 
 
11129        <li class="covered" data-hits="11" data-linenumber="6">
 
11130          <span class="hits">11</span>
11131
 
 
11132          <code class="ruby">  subject { described_class.find_or_create_by! survey: survey, name: AppConstants::TEST_VISIT, user: user }</code>
11133
 
11133        </li>
11134
 
 
11135        <li class="covered" data-hits="11" data-linenumber="7">
 
11136          <span class="hits">11</span>
11137
 
 
11138          <code class="ruby">  let!(:survey) { TestFactory.test_survey }</code>
11139
 
11139        </li>
11140
 
 
11141        <li class="covered" data-hits="11" data-linenumber="8">
 
11142          <span class="hits">11</span>
11143
 
 
11144          <code class="ruby">  let!(:user) { TestFactory.test_user }</code>
11145
 
11145        </li>
11146
 
 
11147        <li class="covered" data-hits="11" data-linenumber="9">
 
11148          <span class="hits">11</span>
11149
 
 
11150          <code class="ruby">  let!(:assessment) { Assessment.find_or_create_by! visit: subject }</code>
11151
 
11151        </li>
11152
 
 
11153        <li class="never" data-hits="" data-linenumber="10">
 
 
 
11156          <code class="ruby">    </code>
11157
 
11157        </li>
11158
 
 
11159        <li class="covered" data-hits="1" data-linenumber="11">
 
11160          <span class="hits">1</span>
11161
 
 
11162          <code class="ruby">  describe &#39;.create!&#39; do</code>
 
11163        </li>
11164
 
 
11165        <li class="covered" data-hits="1" data-linenumber="12">
 
11166          <span class="hits">1</span>
11167
 
 
11168          <code class="ruby">    context &#39;no survey and user&#39; do</code>
 
11169        </li>
11170
 
 
11171        <li class="covered" data-hits="3" data-linenumber="13">
 
11172          <span class="hits">3</span>
11173
 
 
11174          <code class="ruby">      it { expect { described_class.create! }.to raise_error ActiveRecord::RecordInvalid }</code>
11175
 
11175        </li>
11176
 
 
11177        <li class="never" data-hits="" data-linenumber="14">
 
 
 
11180          <code class="ruby">    end</code>
11181
 
11181        </li>
11182
 
 
11183        <li class="never" data-hits="" data-linenumber="15">
 
 
 
11186          <code class="ruby"></code>
11187
 
11187        </li>
11188
 
 
11189        <li class="covered" data-hits="1" data-linenumber="16">
 
11190          <span class="hits">1</span>
11191
 
 
11192          <code class="ruby">    context &#39;no user&#39; do</code>
 
11193        </li>
11194
 
 
11195        <li class="covered" data-hits="3" data-linenumber="17">
 
11196          <span class="hits">3</span>
11197
 
 
11198          <code class="ruby">      it { expect { described_class.create! survey: survey }.to raise_error ActiveRecord::RecordInvalid }</code>
11199
 
11199        </li>
11200
 
 
11201        <li class="never" data-hits="" data-linenumber="18">
 
 
 
11204          <code class="ruby">    end</code>
11205
 
11205        </li>
11206
 
 
11207        <li class="never" data-hits="" data-linenumber="19">
 
 
 
11210          <code class="ruby">  </code>
11211
 
11211        </li>
11212
 
 
11213        <li class="covered" data-hits="1" data-linenumber="20">
 
11214          <span class="hits">1</span>
11215
 
 
11216          <code class="ruby">    context &#39;no survey&#39; do</code>
 
11217        </li>
11218
 
 
11219        <li class="covered" data-hits="3" data-linenumber="21">
 
11220          <span class="hits">3</span>
11221
 
 
11222          <code class="ruby">      it { expect { described_class.create! user: user }.to raise_error ActiveRecord::RecordInvalid }</code>
11223
 
11223        </li>
11224
 
 
11225        <li class="never" data-hits="" data-linenumber="22">
 
 
 
11228          <code class="ruby">    end</code>
11229
 
11229        </li>
11230
 
 
11231        <li class="never" data-hits="" data-linenumber="23">
 
 
 
11234          <code class="ruby"></code>
11235
 
11235        </li>
11236
 
 
11237        <li class="covered" data-hits="1" data-linenumber="24">
 
11238          <span class="hits">1</span>
11239
 
 
11240          <code class="ruby">    context &#39;with user and survey&#39; do</code>
 
11241        </li>
11242
 
 
11243        <li class="covered" data-hits="3" data-linenumber="25">
 
11244          <span class="hits">3</span>
11245
 
 
11246          <code class="ruby">      it { expect { described_class.find_or_create_by! user: user, survey: survey }.not_to raise_error }</code>
11247
 
11247        </li>
11248
 
 
11249        <li class="never" data-hits="" data-linenumber="26">
 
 
 
11252          <code class="ruby">    end</code>
11253
 
11253        </li>
11254
 
 
11255        <li class="never" data-hits="" data-linenumber="27">
 
 
 
11258          <code class="ruby">  end</code>
11259
 
11259        </li>
11260
 
 
11261        <li class="never" data-hits="" data-linenumber="28">
 
 
 
11264          <code class="ruby"></code>
11265
 
11265        </li>
11266
 
 
11267        <li class="covered" data-hits="1" data-linenumber="29">
 
11268          <span class="hits">1</span>
11269
 
 
11270          <code class="ruby">  describe &#39;#to_s&#39; do</code>
 
11271        </li>
11272
 
 
11273        <li class="covered" data-hits="1" data-linenumber="30">
 
11274          <span class="hits">1</span>
11275
 
 
11276          <code class="ruby">    it do</code>
11277
 
11277        </li>
11278
 
 
11279        <li class="covered" data-hits="1" data-linenumber="31">
 
11280          <span class="hits">1</span>
11281
 
 
11282          <code class="ruby">      ur = User.find_or_create_by! username: &#39;bernie&#39;</code>
 
11283        </li>
11284
 
 
11285        <li class="covered" data-hits="1" data-linenumber="32">
 
11286          <span class="hits">1</span>
11287
 
 
11288          <code class="ruby">      v = described_class.find_or_create_by! user: ur, number: 1, survey: survey</code>
11289
 
11289        </li>
11290
 
 
11291        <li class="covered" data-hits="1" data-linenumber="33">
 
11292          <span class="hits">1</span>
11293
 
 
11294          <code class="ruby">      expect(v.to_s).to eq(&quot;bernie #{survey.name} #{v.number}&quot;)</code>
 
11295        </li>
11296
 
 
11297        <li class="never" data-hits="" data-linenumber="34">
 
 
 
11300          <code class="ruby">    end</code>
11301
 
11301        </li>
11302
 
 
11303        <li class="never" data-hits="" data-linenumber="35">
 
 
 
11306          <code class="ruby">  end</code>
11307
 
11307        </li>
11308
 
 
11309        <li class="never" data-hits="" data-linenumber="36">
 
 
 
11312          <code class="ruby"></code>
11313
 
11313        </li>
11314
 
 
11315        <li class="covered" data-hits="1" data-linenumber="37">
 
11316          <span class="hits">1</span>
11317
 
 
11318          <code class="ruby">  describe &#39;#eq&#39; do</code>
 
11319        </li>
11320
 
 
11321        <li class="covered" data-hits="1" data-linenumber="38">
 
11322          <span class="hits">1</span>
11323
 
 
11324          <code class="ruby">    context &#39;same user, survey and name&#39; do</code>
 
11325        </li>
11326
 
 
11327        <li class="covered" data-hits="1" data-linenumber="39">
 
11328          <span class="hits">1</span>
11329
 
 
11330          <code class="ruby">      ur = User.find_or_create_by! username: &#39;user compare&#39;</code>
 
11331        </li>
11332
 
 
11333        <li class="covered" data-hits="1" data-linenumber="40">
 
11334          <span class="hits">1</span>
11335
 
 
11336          <code class="ruby">      sy = Survey.find_or_create_by! name: &#39;survey compare&#39;</code>
 
11337        </li>
11338
 
 
11339        <li class="covered" data-hits="1" data-linenumber="41">
 
11340          <span class="hits">1</span>
11341
 
 
11342          <code class="ruby">      v1 = described_class.create! user: ur, name: &#39;visit 1&#39;, survey: sy</code>
 
11343        </li>
11344
 
 
11345        <li class="covered" data-hits="1" data-linenumber="42">
 
11346          <span class="hits">1</span>
11347
 
 
11348          <code class="ruby">      v2 = described_class.where(user_id: v1.user.id, name: v1.name, survey_id: v1.survey.id).first</code>
11349
 
11349        </li>
11350
 
 
11351        <li class="covered" data-hits="2" data-linenumber="43">
 
11352          <span class="hits">2</span>
11353
 
 
11354          <code class="ruby">      it { expect(v1.id).to eq(v2.id) }</code>
11355
 
11355        </li>
11356
 
 
11357        <li class="covered" data-hits="1" data-linenumber="44">
 
11358          <span class="hits">1</span>
11359
 
 
11360          <code class="ruby">      ur.destroy!</code>
11361
 
11361        </li>
11362
 
 
11363        <li class="covered" data-hits="1" data-linenumber="45">
 
11364          <span class="hits">1</span>
11365
 
 
11366          <code class="ruby">      sy.destroy!</code>
11367
 
11367        </li>
11368
 
 
11369        <li class="never" data-hits="" data-linenumber="46">
 
 
 
11372          <code class="ruby">    end</code>
11373
 
11373        </li>
11374
 
 
11375        <li class="never" data-hits="" data-linenumber="47">
 
 
 
11378          <code class="ruby">  end</code>
11379
 
11379        </li>
11380
 
 
11381        <li class="never" data-hits="" data-linenumber="48">
 
 
 
11384          <code class="ruby"></code>
11385
 
11385        </li>
11386
 
 
11387        <li class="covered" data-hits="1" data-linenumber="49">
 
11388          <span class="hits">1</span>
11389
 
 
11390          <code class="ruby">  describe &#39;#destroy!&#39; do</code>
 
11391        </li>
11392
 
 
11393        <li class="covered" data-hits="1" data-linenumber="50">
 
11394          <span class="hits">1</span>
11395
 
 
11396          <code class="ruby">    it &#39;destroys assessment&#39; do</code>
 
11397        </li>
11398
 
 
11399        <li class="covered" data-hits="1" data-linenumber="51">
 
11400          <span class="hits">1</span>
11401
 
 
11402          <code class="ruby">      cached_id = assessment.id</code>
11403
 
11403        </li>
11404
 
 
11405        <li class="covered" data-hits="1" data-linenumber="52">
 
11406          <span class="hits">1</span>
11407
 
 
11408          <code class="ruby">      v1 = described_class.find_or_create_by! user: user, name: &#39;visit 1&#39;, survey: survey, number: 2</code>
 
11409        </li>
11410
 
 
11411        <li class="covered" data-hits="1" data-linenumber="53">
 
11412          <span class="hits">1</span>
11413
 
 
11414          <code class="ruby">      v1.assessments.concat(assessment)</code>
11415
 
11415        </li>
11416
 
 
11417        <li class="covered" data-hits="1" data-linenumber="54">
 
11418          <span class="hits">1</span>
11419
 
 
11420          <code class="ruby">      v1.destroy</code>
11421
 
11421        </li>
11422
 
 
11423        <li class="covered" data-hits="2" data-linenumber="55">
 
11424          <span class="hits">2</span>
11425
 
 
11426          <code class="ruby">      expect { Assessment.find(cached_id) }.to raise_error(ActiveRecord::RecordNotFound)</code>
11427
 
11427        </li>
11428
 
 
11429        <li class="never" data-hits="" data-linenumber="56">
 
 
 
11432          <code class="ruby">    end</code>
11433
 
11433        </li>
11434
 
 
11435        <li class="never" data-hits="" data-linenumber="57">
 
 
 
11438          <code class="ruby"></code>
11439
 
11439        </li>
11440
 
 
11441        <li class="covered" data-hits="1" data-linenumber="58">
 
11442          <span class="hits">1</span>
11443
 
 
11444          <code class="ruby">    it &#39;destroys assessments&#39; do</code>
 
11445        </li>
11446
 
 
11447        <li class="covered" data-hits="1" data-linenumber="59">
 
11448          <span class="hits">1</span>
11449
 
 
11450          <code class="ruby">      subject.assessments.each(&amp;:destroy!)</code>
11451
 
11451        </li>
11452
 
 
11453        <li class="covered" data-hits="1" data-linenumber="60">
 
11454          <span class="hits">1</span>
11455
 
 
11456          <code class="ruby">      expect(subject.assessments.count.to_s).to eq &#39;0&#39; </code>
 
11457        </li>
11458
 
 
11459        <li class="never" data-hits="" data-linenumber="61">
 
 
 
11462          <code class="ruby">    end</code>
11463
 
11463        </li>
11464
 
 
11465        <li class="never" data-hits="" data-linenumber="62">
 
 
 
11468          <code class="ruby">  end</code>
11469
 
11469        </li>
11470
 
 
11471        <li class="never" data-hits="" data-linenumber="63">
 
 
 
11474          <code class="ruby"></code>
11475
 
11475        </li>
11476
 
 
11477        <li class="covered" data-hits="1" data-linenumber="64">
 
11478          <span class="hits">1</span>
11479
 
 
11480          <code class="ruby">  describe &#39;#concat assessments&#39; do</code>
 
11481        </li>
11482
 
 
11483        <li class="covered" data-hits="1" data-linenumber="65">
 
11484          <span class="hits">1</span>
11485
 
 
11486          <code class="ruby">    it do</code>
11487
 
11487        </li>
11488
 
 
11489        <li class="covered" data-hits="1" data-linenumber="66">
 
11490          <span class="hits">1</span>
11491
 
 
11492          <code class="ruby">      ass1 = Assessment.create! visit: subject, order_number: 24</code>
11493
 
11493        </li>
11494
 
 
11495        <li class="covered" data-hits="1" data-linenumber="67">
 
11496          <span class="hits">1</span>
11497
 
 
11498          <code class="ruby">      ass2 = Assessment.create! visit: subject, order_number: 2</code>
11499
 
11499        </li>
11500
 
 
11501        <li class="covered" data-hits="1" data-linenumber="68">
 
11502          <span class="hits">1</span>
11503
 
 
11504          <code class="ruby">      subject.assessments.concat [ass1, ass2]</code>
11505
 
11505        </li>
11506
 
 
11507        <li class="covered" data-hits="1" data-linenumber="69">
 
11508          <span class="hits">1</span>
11509
 
 
11510          <code class="ruby">      expect(subject.assessments.count.to_s).to eq &#39;3&#39; </code>
 
11511        </li>
11512
 
 
11513        <li class="covered" data-hits="1" data-linenumber="70">
 
11514          <span class="hits">1</span>
11515
 
 
11516          <code class="ruby">      subject.assessments.each(&amp;:destroy!)</code>
11517
 
11517        </li>
11518
 
 
11519        <li class="never" data-hits="" data-linenumber="71">
 
 
 
11522          <code class="ruby">    end</code>
11523
 
11523        </li>
11524
 
 
11525        <li class="never" data-hits="" data-linenumber="72">
 
 
 
11528          <code class="ruby">  end</code>
11529
 
11529        </li>
11530
 
 
11531        <li class="never" data-hits="" data-linenumber="73">
 
 
 
11534          <code class="ruby"></code>
11535
 
11535        </li>
11536
 
 
11537        <li class="covered" data-hits="1" data-linenumber="74">
 
11538          <span class="hits">1</span>
11539
 
 
11540          <code class="ruby">  describe &#39;#created_at today&#39; do</code>
 
11541        </li>
11542
 
 
11543        <li class="never" data-hits="" data-linenumber="75">
 
 
 
11546          <code class="ruby">    # expect record to be created within the last 5 minutes to check timestamp works</code>
 
11547        </li>
11548
 
 
11549        <li class="covered" data-hits="2" data-linenumber="76">
 
11550          <span class="hits">2</span>
11551
 
 
11552          <code class="ruby">    it { expect(Time.now - subject.created_at).to be &lt; 300 }</code>
11553
 
11553        </li>
11554
 
 
11555        <li class="never" data-hits="" data-linenumber="77">
 
 
 
11558          <code class="ruby">  end</code>
11559
 
11559        </li>
11560
 
 
11561        <li class="never" data-hits="" data-linenumber="78">
 
 
 
11564          <code class="ruby">end</code>
11565
 
11565        </li>
11566
 
 
11567    </ol>
11568
 
11568  </pre>
11569
 
11569</div>
11570
 
 
 
11572      </div>
11573
 
11573    </div>
11574
 
11574  </body>
11575
 
11575</html>
11576